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{
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。 二进制节点是使用泛型实现的。调
我有一个二叉树,我想打印所有非边界节点。边界节点:-所有叶节点从根到最左节点路径上的所有节点所有节点从根到最右节点。 我在树结构中使用了一个额外的布尔值来确定它是否是边界节点,如果不是边界节点,则进行遍历和打印。有人能想出一个更好的方法吗,因为它使用了一些额外的空间(虽然很少)。
问题查找具有n个节点的完整二叉树中的叶节点数。 我为上述问题编写了一个递归程序,每当我到达一个没有子节点的节点时,遍历树并增加叶节点的数量。但由于这棵树是一棵完整的二叉树,我认为这会使问题变得更容易,但我不知道如何解决。它是否可以简化为紧凑形式(类似于公式)。