当前位置: 首页 > 知识库问答 >
问题:

如何编写在二叉树(Java)中按级别顺序(从左到右)插入节点的方法?

夹谷星河
2023-03-14

我一直在尝试编写一个方法,以级别顺序(从左到右)在二叉树中插入节点,它只在第一个节点(根)中插入值。这是代码,我希望你能修复它!!!

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();}

        }
      }}}

共有1个答案

昌和悦
2023-03-14

您可以使用此代码,您必须在每次调用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的空格。 我理解根据树的高度遍历树的概念,一次遍历一个层次,但我不确定以这种方式构建树的正确