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

java中的二叉树节点插入[closed]

公西英叡
2023-03-14
public class InsertionBInaryTree 
{
    static Node root; 
    public static void main(String[] args) 
    {
                int key = sc.nextInt();
                addNode(root,key);
                display(root);
    }
    public static void display(Node root)
    {
        if(root==null)
            return;
        display(root.left);
        System.out.println(root.data+"->");
        display(root.right);
    }
    public static void addNode(Node node,int data)
    {
        Node temp = new Node(data);
        if(node==null)
        {
            root = temp;
            return;
        }
        Queue<Node> q = new LinkedList<Node>();
        q.add(root);
        while(!q.isEmpty())
        {
            Node r = q.peek(); 
            r=q.peek();
            q.remove();
            if(r.left==null)
            {
                r.left=temp;
                break;
            }
            else
            {
                q.add(r.left);
            }
            if(r.right==null)
            {
                r.right=temp;
                break;
            }

我试图在二叉树中插入节点,如果我用addNode(Node root)替换方法addNode(Node Node)代码运行良好。这是因为我在第一行声明了静态节点根;吗?请解释一下。addNode方法由于字数限制而不完整,否则它是完整的,运行良好。

共有1个答案

傅嘉悦
2023-03-14

这很正常,因为root将作为全局变量访问。当您使用addnode(Node root)时,它将作为函数的参数进行访问,如果您想在它们之间产生差异,那么在您想引用全局变量时,请使用this.root

 类似资料:
  • 我试图在二叉树中插入节点,如果我用addNode(Node root)替换方法addNode(Node Node)代码运行良好。这是因为我在第一行声明了吗?请解释一下。addNode方法由于字数限制而不完整,否则它是完整的,运行良好。

  • 几天来,我一直在使用二进制搜索树实现,我已经到了知道我的根正在通过使用我的“插入()”来填充的地步(当我使用Eclipse进行调试时,我可以看到这一点)。为什么我的其他节点不会被添加到树中? 这是我的BST课程: 这是我的Main(),最终我想在控制台中打印我的BST值,但首先我知道它们需要添加到树中: 公共类Main{

  • 二叉搜索树(BST)和二叉树(BT)中的插入有什么区别?我知道,在BST中,您将新节点的值与根进行比较,如果较小,则添加到其左侧,如果较大,则将其添加到根的右侧。BT的程序是否相同?如果没有,插入和移除的步骤是什么?

  • class Node(object): def __init__(self, data, left=None, right=None): self.data = data self.left = left self.right = right tree = Node(1, Node(3, Node(7, Node(0)), Node(6)), Node(2, Node

  • 当我使用将新节点插入到二叉树中时,它只在子节点的位置插入新节点,即使根节点已经有左、右子节点。它不是访问子节点来创建更深层次的二叉树。 抱歉英语不好。

  • 所以我想进入我的树(假设它没有重复项并且分支正确)并找到参数中给出的元素。我发现我的方法给了我一个 BinaryNode,它类似于我想要的(根)在其字段中,但实际上不是根。我没有覆盖等于方法。使用 equals 方法,当比较返回的对象和根时,测试返回 false。我想知道为什么我的变量 elementNode 在设置为 null 时不引用(因此更改)根为 null。 二进制节点是使用泛型实现的。调