【LeetCode】二叉搜索树的前序,中序,后续遍历非递归方法

前序遍历

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

中序遍历

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

后序遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public List<Integer> postorderTraversal(TreeNode root) {
        LinkedList<Integer> list = new LinkedList<Integer>();
        Stack<TreeNode> stack=new Stack<TreeNode>();
        TreeNode p=root;
        while(!stack.isEmpty()||p!=null){
            if(p!=null){
                stack.push(p);
                list.addFirst(p.val);// Reverse the process of preorder
                p=p.right;
            }else{
                TreeNode node=stack.pop();
                p=node.left;
            }
        }
        return list;
    }

  

  

posted @   陈泽泽  阅读(968)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2015-09-06 session与cookie的区别
点击右上角即可分享
微信分享提示