LeetCode 94. Binary Tree Inorder Traversal
来源:互联网 发布:app内测分发系统源码 编辑:程序博客网 时间:2024/06/10 01:40
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree [1,null,2,3]
,
1 \ 2 / 3
return [1,3,2]
.
Note: Recursive solution is trivial, could you do it iteratively?
解题思路:先定义一个栈,从根节点开始,找到最左边节点,并在找最左节点时,将最左边节点的所有祖先节点进栈。找到最左节点后,将该节点放入list中,再对该节点的右孩子进行循环处理。主要注意的是循环的结束条件,栈不空,表示有节点没有进入list中,指向当前处理节点的指针不为空,表示还有节点没有处理完。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> list= new ArrayList<Integer>(); if(root!=null){ Stack<TreeNode> stack= new Stack<TreeNode>(); //先把根节点进栈 // stack.push(root); //出栈 TreeNode p=root; //栈不空,表示有节点没有访问 while(!stack.empty() || p!=null ){ //当前出栈节点有左孩子 while(p!=null){ stack.push(p); p=p.left; } //while循环结束时,表示已经到了最左边叶子节点的左孩子了 p=stack.pop(); list.add(p.val); //将最左孩子的值加入list中 p=p.right; } } return list; }}
0 0
- LeetCode 94. Binary Tree Inorder Traversal
- [LeetCode]94.Binary Tree Inorder Traversal
- 94. Binary Tree Inorder Traversal Leetcode Python
- [Leetcode] 94. Binary Tree Inorder Traversal
- LeetCode --- 94. Binary Tree Inorder Traversal
- LeetCode 94. Binary Tree Inorder Traversal
- [leetcode] 94.Binary Tree Inorder Traversal
- 94. Binary Tree Inorder Traversal LeetCode
- LeetCode 94. Binary Tree Inorder Traversal
- *LeetCode 94. Binary Tree Inorder Traversal
- [LeetCode]94. Binary Tree Inorder Traversal
- [LeetCode]94. Binary Tree Inorder Traversal
- 【LeetCode】94. Binary Tree Inorder Traversal
- leetcode 94. Binary Tree Inorder Traversal
- leetcode 94. Binary Tree Inorder Traversal
- LeetCode *** 94. Binary Tree Inorder Traversal
- LeetCode-94.Binary Tree Inorder Traversal
- LeetCode 94. Binary Tree Inorder Traversal
- chrome的插件Postman安装方法
- 如何将 JSON, Text, XML, CSV 数据文件导入 MySQL
- linux精简开机启动项
- 《重构,改善既有代码的设计》读书笔记
- 使用jxls技术导入Excel模版数据
- LeetCode 94. Binary Tree Inorder Traversal
- C++上机5作业
- bzoj1566: [NOI2009]管道取珠
- Java-基本元素
- Python实现ssh登录执行shell命令并将结果写入mysql数据库
- 第124课:Spark Streaming性能优化:通过Spark Streaming进行设备日志监控报警及性能优化
- Unity3d:一个简单的画圈圈手势判断
- Android Studio lambda表达式使用配置
- WPF绘图和动画-VisualBrush实例