我一直在尝试编写一个方法,以级别顺序(从左到右)在二叉树中插入节点,它只在第一个节点(根)中插入值。这是代码,我希望你能修复它!!!
class TreeNode{
int item;
TreeNode left=null;
TreeNode right=null;
public TreeNode(int item){
this.item=item;
}
}
class Tree{
public void insert(int item) {
Queue<TreeNode> q = new LinkedList<>();
if(root==null){
root=new TreeNode(item);
temp=root;
q.offer(temp);
}
else{
while (!q.isEmpty()) {
temp = q.peek();
if (temp.left == null) {
temp.left = new TreeNode(item);
break;
}
if (temp.right == null) {
temp.right = new TreeNode(item);
break;
} else{
q.offer(temp.left);
q.offer(temp.right);
q.poll();}
}
}}}
您可以使用此代码,您必须在每次调用insert
方法时将temp
分配给root
public void insert(int item) {
Queue<TreeNode> q = new LinkedList<TreeNode>();
if(root==null){
root = new TreeNode(item);
} else {
temp = root;
q.offer(temp);
while (!q.isEmpty()) {
temp = q.peek();
if (temp.left == null) {
temp.left = new TreeNode(item);
break;
}
if (temp.right == null) {
temp.right = new TreeNode(item);
break;
} else{
q.offer(temp.left);
q.offer(temp.right);
q.poll();
}
}
}
}
这是一个面试问题。 我们希望按it级别打印二叉树,但有一些变化: 在偶数级别,打印将从左到右。 在奇数级别,打印将从右到左。 我试着使用这里的代码(正常的级别顺序遍历,方法2)只做了一些保持级别的更改(用于知道是从左到右打印还是从右到左打印),当然还添加了相关的条件,以便在正确的方向上打印。 不幸的是,我下面的代码在不小的树上不能很好地工作--我有一个问题,就是理解如何在循环中以正确的顺序存储节点
我正在尝试编写一个函数,该函数将使用级别顺序遍历将一个元素插入到二叉树中。我的代码遇到的问题是,当我在树中插入一个新节点后打印级别顺序遍历时,它以无限循环的方式打印元素。1,2,3,4,5,6,7,8这个数字一直在飞驰过终点站。我将感谢任何关于如何补救这种情况的指示和建议。 这是我通过修改级别顺序遍历技术将一个元素插入到树中的地方 主
我想从右到左遍历一个二叉树,并将每个具有相同姓氏的条目添加到一个队列中。我已经正确地实现了一个队列列表类和一个树节点类,但是当我试图查找一些东西时,我得到了一个空指针异常。(当然我写过二叉树的插入方法)。
我遇到了这个问题:下面的方法必须返回左侧子节点中的值,或者-1(如果它不存在)。 现在,参数是一个int值,它指示父节点的值。另一个问题是...树不是有序的,只有正整数值。所以,我可以在根中有一个0的值,在左边的子项中有3的值,在右边的子项中有1的值,以此类推...我想不出该怎么解决这件事。我不能将像LinkedList或Stack这样的ADT用于任何目的。二叉树类有一个字段根,类型为node:
我试图在二叉树中插入节点,如果我用addNode(Node root)替换方法addNode(Node Node)代码运行良好。这是因为我在第一行声明了吗?请解释一下。addNode方法由于字数限制而不完整,否则它是完整的,运行良好。
我正在研究一个小算法,它可以按照级别顺序构建二叉树。我得到了一个数组,我必须使用其中的值按级别顺序构建二叉树。示例:arr inarr[5]={1,2,3,4,5}; 给定这样的数组,我需要填写一个二叉树,看起来像这样: (*为NULL)节点是基本的二进制节点,具有左指针和右指针以及用于保存数组中值的int的空格。 我理解根据树的高度遍历树的概念,一次遍历一个层次,但我不确定以这种方式构建树的正确