Я хочу, чтобы мой код обхода inorder получал его значения из массива?
Так выглядит мой код для обычного обхода inorder.
class TreeNode{
TreeNode left;
TreeNode right;
int data;
TreeNode(int data){
this.data= data;
}
public void inorder(TreeNode root)
{
int i;
if (root == null)
{
return;
}
Stack<TreeNode>stack = new Stack<>();
TreeNode temp= root;
while(!stack.isEmpty() || temp != null) {
if(temp != null) {
stack.push(temp);
temp=temp.left;
}
else
{
temp= stack.pop();
array[i]=temp; // in normal cases I would just printout here
i=i+1; // like this there should be an sorted array at the end?
temp=temp.right;
}
}
}
Часть, которую я не понимаюкак я должен создать двоичное дерево с массивом.Вот как я обычно это делаю
public void createBinaryTree(){
TreeNode first= new TreeNode(8)
TreeNode second= new TreeNode(4)
TreeNode third= new TreeNode(5)
TreeNode fourth= new TreeNode(6)
root= first;
first.left=second;
first.right=third;
second.left = fourth;
Полагаю, я мог бы сделать это с массивом, используя какой-то цикл, но так как я не могу знать, как долго массив будет заранее, я не могу реально определить, насколько большойсозданное дерево должно быть.
Я знаю, что мой английский не настолько хорош, но я надеюсь, что этого достаточно, чтобы вы, ребята, поняли, что я хочу сказать.