如何在不使用队列的情况下按相反顺序遍历二叉树 public void重新遍历(BinaryTree-BinaryTree) { Queue Queue=new LinkedList(); 堆栈=新堆栈(); 节点温度; 添加(根); 而(!queue.isEmpty()){ temp=queue.poll(); if(临时rightNode!=null) 添加(临时右节点); if(临时节点!=null) 添加(临时节点); 堆栈推送(温度); } 而(!stack.isEmpty())System.out.println(“节点是”+stack.pop().tData); }

如何在不使用队列的情况下按相反顺序遍历二叉树 public void重新遍历(BinaryTree-BinaryTree) { Queue Queue=new LinkedList(); 堆栈=新堆栈(); 节点温度; 添加(根); 而(!queue.isEmpty()){ temp=queue.poll(); if(临时rightNode!=null) 添加(临时右节点); if(临时节点!=null) 添加(临时节点); 堆栈推送(温度); } 而(!stack.isEmpty())System.out.println(“节点是”+stack.pop().tData); },tree,queue,reverse,traversal,Tree,Queue,Reverse,Traversal,为什么我们不能简单地用right-child在left-child之前迭代二进制文件,并直接推送堆栈中的所有值呢。为什么我们使用队列作为备份数据结构?在这种情况下,您可以跳过堆栈直接打印出来。你自己检查过了吗?虽然我能够以相反的顺序遍历树,部分是通过从右子级到左子级的级别顺序遍历,并将这些节点推入堆栈和pop()中堆栈可以获得所需的顺序,但我不明白为什么许多人建议首先使用队列,而不是从堆栈中推送和弹出。在这种情况下,您可以跳过堆栈并直接打印出来。你自己检查过了吗?虽然我能够以相反的顺序遍历树,部

为什么我们不能简单地用right-child在left-child之前迭代二进制文件,并直接推送堆栈中的所有值呢。为什么我们使用队列作为备份数据结构?

在这种情况下,您可以跳过堆栈直接打印出来。你自己检查过了吗?虽然我能够以相反的顺序遍历树,部分是通过从右子级到左子级的级别顺序遍历,并将这些节点推入堆栈和pop()中堆栈可以获得所需的顺序,但我不明白为什么许多人建议首先使用队列,而不是从堆栈中推送和弹出。在这种情况下,您可以跳过堆栈并直接打印出来。你自己检查过了吗?虽然我能够以相反的顺序遍历树,部分是通过从右子级到左子级的级别顺序遍历,并将这些节点推入堆栈和pop()中堆栈可以获得所需的顺序,但我不明白为什么许多人建议首先使用队列,而不是从堆栈中推送和弹出。在这种情况下,您可以跳过堆栈并直接打印出来。你自己检查过了吗?虽然我能够以相反的顺序遍历树,部分是通过从右子级到左子级的级别顺序遍历,并将这些节点推入堆栈和pop()中堆栈以获得所需的顺序,但我不明白为什么许多人建议首先使用队列,而不是从堆栈中推和弹出
public void revTraversal(BinaryTree binaryTree)
{
    Queue<Node> queue = new LinkedList<Node>();
    Stack<Node> stack = new Stack<Node>();
    Node temp;
    queue.add(root);
    while(!queue.isEmpty()){
        temp = queue.poll();
        if(temp.rightNode!=null)
            queue.add(temp.rightNode);
        if(temp.lefNode!=null)
            queue.add(temp.lefNode);
        stack.push(temp);
    }
    while(!stack.isEmpty())System.out.println("Nodes are"+ stack.pop().tData);
}