java吧 关注:1,243,510贴子:12,716,557
  • 8回复贴,共1

【我成功了是吗?】二叉树后序遍历非递归算法

只看楼主收藏回复



1楼2014-01-01 15:03回复
    求一个确认啊


    来自手机贴吧2楼2014-01-01 15:25
    回复
      我很好奇postRootTraverse(BiTreeNode)是啥


      IP属地:广西4楼2014-01-01 15:43
      收起回复
        屌炸天


        IP属地:广东来自Android客户端5楼2014-01-01 15:44
        回复
          闲着没事写了一个
          package test.algo;
          import java.util.Deque;
          import java.util.LinkedList;
          public class BiTreeTraverse{
          public static void main(String[] args){
          final BiTreeNode root = new BiTreeNode(4)
          .left(new BiTreeNode(2)
          .left(new BiTreeNode(1))
          .right(new BiTreeNode(3))
          )
          .right(new BiTreeNode(5)
          .right(new BiTreeNode(7)
          .left(new BiTreeNode(6))
          )
          );
          final Object flag = new Object(); // 仅作为标记用的对象
          Deque<Object> stack = new LinkedList<>();
          stack.push(root);
          while (!stack.isEmpty()){
          if (stack.peek() == flag){ // 检查是否输出标记
          stack.pop();
          BiTreeNode node = (BiTreeNode)stack.pop();
          System.out.print(node.data);
          }else{
          BiTreeNode node = (BiTreeNode)stack.peek(); // 注意这里把节点留在栈里了
          stack.push(flag); // 嵌入输出标记,以示输出栈顶节点
          if (node.right != null) stack.push(node.right);
          if (node.left != null) stack.push(node.left);
          }
          }
          System.out.println();
          }
          }
          class BiTreeNode{
          BiTreeNode left;
          BiTreeNode right;
          Object data;
          BiTreeNode(){
          }
          BiTreeNode(Object data){
          this.data = data;
          }
          BiTreeNode left(BiTreeNode left){
          this.left = left;
          return this;
          }
          BiTreeNode right(BiTreeNode right){
          this.right = right;
          return this;
          }
          }
          用于参考的二叉树
             4
           2  5
          1 3  7
              6


          IP属地:广西6楼2014-01-01 16:18
          收起回复
            你好楼主


            IP属地:浙江来自手机贴吧7楼2014-01-01 19:45
            回复