zoukankan      html  css  js  c++  java
  • Preorder, Inorder, and Postorder非递归总结

    Preorder, Inorder, and Postorder Iteratively Summarization[1]

    1.Pre Order Traverse

     1 public List<Integer> preorderTraversal(TreeNode root) {
     2     List<Integer> result = new ArrayList<>();
     3     Deque<TreeNode> stack = new ArrayDeque<>();
     4     TreeNode p = root;
     5     while(!stack.isEmpty() || p != null) {
     6         if(p != null) {
     7             stack.push(p);
     8             result.add(p.val);  // Add before going to children
     9             p = p.left;
    10         } else {
    11             TreeNode node = stack.pop();
    12             p = node.right;   
    13         }
    14     }
    15     return result;
    16 }

    2.In Order Traverse

     1 public List<Integer> inorderTraversal(TreeNode root) {
     2     List<Integer> result = new ArrayList<>();
     3     Deque<TreeNode> stack = new ArrayDeque<>();
     4     TreeNode p = root;
     5     while(!stack.isEmpty() || p != null) {
     6         if(p != null) {
     7             stack.push(p);
     8             p = p.left;
     9         } else {
    10             TreeNode node = stack.pop();
    11             result.add(node.val);  // Add after all left children
    12             p = node.right;   
    13         }
    14     }
    15     return result;
    16 }

    3.Post Order Traverse

     1 public List<Integer> postorderTraversal(TreeNode root) {
     2     LinkedList<Integer> result = new LinkedList<>();
     3     Deque<TreeNode> stack = new ArrayDeque<>();
     4     TreeNode p = root;
     5     while(!stack.isEmpty() || p != null) {
     6         if(p != null) {
     7             stack.push(p);
     8             result.addFirst(p.val);  // Reverse the process of preorder
     9             p = p.right;             // Reverse the process of preorder
    10         } else {
    11             TreeNode node = stack.pop();
    12             p = node.left;           // Reverse the process of preorder
    13         }
    14     }
    15     return result;
    16 }
  • 相关阅读:
    jmeter—— vars 和 props 用法
    java—把字符串转成list类型,并遍历列表
    fillder—篡改请求参数重新请求
    Jmeter—变量嵌套变量方法
    python——logging日志模块
    python学习——使用excel读写测试数据
    python学习——单元测试unittest
    python学习——类
    python学习——异常
    资源信息汇总
  • 原文地址:https://www.cnblogs.com/vin-yuan/p/5359436.html
Copyright © 2011-2022 走看看