如何编写一种方法来在二进制树(java)中按级别顺序(从左到右)插入节点?

问题描述 投票:0回答:1

我一直在尝试编写一种方法来按级别顺序(从左到右)在二叉树中插入节点,并且它仅在第一个节点(根)中插入值。这是我希望您可以解决的代码!

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

        }
      }}}
java binary-tree
1个回答
0
投票

您可以使用此代码,每次调用temp方法时必须将root分配给insert

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();
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.