设有一个二叉排序树,其结点上存储有数字1到100,现在要查找数字55
1个回答
关注
展开全部
亲~您好,设有一个二叉排序树,其结点上存储有数字1到100,现在要查找数字55方法:(1)根据序列{17,25,30,33,34,45,47,50,55,90,100,120,130}画出相应的二叉排序树;(2)在二叉树基本操作实现的代码基础上进行修改,实现二叉排序树的添加操作和查找操作三.基于二叉排序树的查找算法设计(给出详细的算法步骤,不是程序代码)二叉排序树的添加(add)操作:(private TreeNode add(TreeNode node,E e) )1)先判断root是否为空,若为空则新建结点node作为树的根返回(return new TreeNode(e)2)若不为空则判断:—如果待插入节点值(e)小于根节点的值(node.data),将新节点插入左子树中—如果待插入节点值(e)大于根节点的值(node.data),将新节点插入右子树中—节点值(e)等于根节点的值(node.data),则不需要插入二叉排序树的查找(contains)操作:1)先判断root是否为空,若为空则直接返回false2)若不为空则把要查找的元素e与根节点进行比较—如果待查找节点值(e)等于根节点的值(node.data),直接返回true—如果待查找节点值(e)小于根节点的值(node.data),则继续去左边进行递归查找,若能找到则返回true,找不到则返回false—如果待插入节点值(e)大于根节点的值(node.data),则继续去右边进行递归查找,若能找到则返回true,找不到则返回false二叉排序树的查找(find)操作:1)从根开始查找,如果树为空则返回null2)若树非空,则—若e小于根节点的值,继续搜索左子树—若e大于根节点的值,继续搜索右子树—若e等于根节点的值。搜索完成,返回根节点的地址二叉排序树的查找最小元素和最大元素—最大元素一定在树的最右分支的端点上—最小元素一定在树的最左分支的端点上四.运行截图五.源程序代码package Tree;import java.util.HashMap;import java.util.LinkedList;import java.util.Map;import java.util.Queue;
咨询记录 · 回答于2022-12-20
设有一个二叉排序树,其结点上存储有数字1到100,现在要查找数字55
亲~您好,设有一个二叉排序树,其结点上存储有数字1到100,现在要查找数字55方法:(1)根据序列{17,25,30,33,34,45,47,50,55,90,100,120,130}画出相应的二叉排序树;(2)在二叉树基本操作实现的代码基础上进行修改,实现二叉排序树的添加操作和查找操作三.基于二叉排序树的查找算法设计(给出详细的算法步骤,不是程序代码)二叉排序树的添加(add)操作:(private TreeNode add(TreeNode node,E e) )1)先判断root是否为空,若为空则新建结点node作为树的根返回(return new TreeNode(e)2)若不为空则判断:—如果待插入节点值(e)小于根节点的值(node.data),将新节点插入左子树中—如果待插入节点值(e)大于根节点的值(node.data),将新节点插入右子树中—节点值(e)等于根节点的值(node.data),则不需要插入二叉排序树的查找(contains)操作:1)先判断root是否为空,若为空则直接返回false2)若不为空则把要查找的元素e与根节点进行比较—如果待查找节点值(e)等于根节点的值(node.data),直接返回true—如果待查找节点值(e)小于根节点的值(node.data),则继续去左边进行递归查找,若能找到则返回true,找不到则返回false—如果待插入节点值(e)大于根节点的值(node.data),则继续去右边进行递归查找,若能找到则返回true,找不到则返回false二叉排序树的查找(find)操作:1)从根开始查找,如果树为空则返回null2)若树非空,则—若e小于根节点的值,继续搜索左子树—若e大于根节点的值,继续搜索右子树—若e等于根节点的值。搜索完成,返回根节点的地址二叉排序树的查找最小元素和最大元素—最大元素一定在树的最右分支的端点上—最小元素一定在树的最左分支的端点上四.运行截图五.源程序代码package Tree;import java.util.HashMap;import java.util.LinkedList;import java.util.Map;import java.util.Queue;
亲~//递归方法(用的先序遍历的思想),打印以Node为根结点的子树//depth表示Node结点在原来的二叉树中的深度,根结点深度为0private void generateBiTString(TreeNode Node,int depth,StringBuilder res) {if(Node==null) {res.append(generateDepthString(depth)+“null\n”);return;}//打印根结点res.append(generateDepthString(depth)+Node.data+"\n");//递归打印左子树generateBiTString(Node.left,depth+1,res);//递归打印右子树generateBiTString(Node.right,depth+1,res);}//打印结点数据前表示该结点深度的字符串(–)private String generateDepthString(int depth) {StringBuilder res=new StringBuilder();for(int i=0;i
设有一个二叉排序树,其结点上存储有数字1到100,现在要查找数字55,下列序列不可能是查找过程访问的节点序列
为什么呢?d选项呢
可以把这四个序列各插入到一个初始为空的二叉排序树中,结果可以发现,C序列形成的不是一条路径,而是有分支的,可见它是不可能在查找过程中访问到的序列。