二叉树oj ---->中序遍历(非递归)
Posted ohana!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树oj ---->中序遍历(非递归)相关的知识,希望对你有一定的参考价值。
题目内容:
解题思路:
主要的思路和之前的先序遍历差不多,也是利用栈的特性,不同的地方也比较小
- 首先遍历根节点的左子树,直到左子树为空时,遍历当前结点,中序遍历的顺序是(左子树 根节点 右子树),不能直接先遍历结点,所以,这次需要保存的是当前结点
解题代码:
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
if(root == null){
return list;
}
Stack<TreeNode> s = new Stack<>();
TreeNode cur = root;
while(!s.empty() || cur != null){
//先往左子树遍历
while(cur != null){
s.push(cur);
cur = cur.left;
}
cur = s.pop();
list.add(cur.val);
cur = cur.right;
}
return list;
}
}
以上是关于二叉树oj ---->中序遍历(非递归)的主要内容,如果未能解决你的问题,请参考以下文章
[05数据结构](初阶)二叉树的基本理解堆的概念和结构及二叉树OJ面试题