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方法由于字数限制而不完整,否则它是完整的,运行良好。
这很正常,因为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。 二进制节点是使用泛型实现的。调