Я написал этот код для создания binary tree
, но выглядит как этот код создает unbalanced binary tree
. Узлы получают только на поддерево right
root
. Я получаю Null pointer exception
, если пытаюсь получить доступ к дочерним узлам левого поддерева. Я хочу создать balanced binary tree
с узлами, вставленными из left to right
. Какую ошибку я делаю здесь и как ее исправить?ошибка в создании сбалансированного двоичного дерева с использованием Java
public class binTree {
public static class TreeNode{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val){
this.val = val;
this.left = null;
this.right = null;
}
}
public TreeNode root;
public binTree(){
this.root = null;
}
public void insert(int data){
root = insert(root,data);
}
public TreeNode insert(TreeNode node,int data){
if(node == null){
node = new TreeNode(data);
//root = node;
}
else{
if(node.left == null){
node.left = insert(node.left,data);
}
else{
node.right = insert(node.right,data);
}
}
return node;
}
public static void main(String args[]){
binTree obj = new binTree();
obj.insert(5);
obj.insert(11);
obj.insert(13);
obj.insert(1);
obj.insert(7);
obj.insert(21);
obj.insert(35);
System.out.println(obj.root.right.left.val);
System.out.println(obj.root.left.right.val); // this throws null pointer exception
}
}
вы можете объяснить 'высоту()'? Я имею в виду, как количество элементов в каждом поддереве вычисляется в 'height()'? – user2916886
@ user2916886 height вычисляет глубину полного поддерева. –