LeetCode 94 Binary Tree Inorder Traversal(二叉树中序遍历)
来源:互联网 发布:淘宝店铺名称可以修改 编辑:程序博客网 时间:2024/05/21 00:20
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?
题目大意:输出给定二叉树中序遍历的结果。
解题思路:二叉树中序遍历的顺序是先遍历左子树,然后遍历根节点,最后遍历右子树。题目说递归遍历的写法太常见了,那我们就写非递归的。根据中序遍历的顺序,我们可以这样处理:
对于任意节点N,
1. 如果N的左孩子不为空,则将N入栈并将N的左孩子设置为N,然后对N进行相同的处理
2. 如果N的左孩子为空,则取出栈顶元素并进行出栈操作,访问栈顶节点,然后将栈顶元素的右孩子置为N
3. 重复上述操作直到N为空且栈为空,遍历结束
参考资料:二叉树的非递归遍历
代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<int> inorderTraversal(TreeNode* root) { if(root == nullptr) return vector<int>(); stack<TreeNode*> stk; vector<int> ans; TreeNode* now = root; while(now || stk.size()){ while(now){ stk.push(now); now = now->left; } if(stk.size()){ now = stk.top(); ans.push_back(now->val); stk.pop(); now = now->right; } } return ans; }};
阅读全文
0 0
- LeetCode 94 Binary Tree Inorder Traversal(二叉树中序遍历)
- Leetcode: Binary Tree Inorder Traversal(二叉树中序遍历)
- 【LeetCode】Binary Tree Inorder Traversal ---二叉树中序遍历
- Binary Tree Inorder Traversal 二叉树中序遍历@LeetCode
- Leetcode Binary Tree Inorder Traversal 二叉树中序遍历
- [leetcode-二叉树中序遍历]--94. Binary Tree Inorder Traversal
- leetcode 94. Binary Tree Inorder Traversal 二叉树中序递归遍历
- 【二叉树中序遍历】Binary Tree Inorder Traversal
- Leetcode 94:Binary Tree Inorder Traversal (二叉树中序遍历,非递归)
- leetCode 94.Binary Tree Inorder Traversal(二叉树中序遍历) 解题思路和方法
- 【LeetCode-面试算法经典-Java实现】【094-Binary Tree Inorder Traversal(二叉树中序遍历)】
- LeetCode 94:Binary Tree Inorder Traversal(中序遍历)
- LeetCode Binary Tree Inorder Traversal 中序遍历二叉树
- LeetCode 94 Binary Tree Inorder Traversal(二叉树的中序遍历)+(二叉树、迭代)
- 二叉树中序遍历Binary Tree Inorder Traversal (Java)
- 二叉树中序遍历——94. Binary Tree Inorder Traversal
- 【LeetCode】Binary Tree Inorder Traversal 二叉树中序遍历递归以及非递归算法
- Leetcode 94. Binary Tree Inorder Traversal 二叉树中序遍历 解题报告
- Docker下dubbo开发,三部曲之三:java开发
- 程序生命周期
- C#值类型与引用类型
- 第七章 Linux常用命令(基本用户管理)
- 如何解决Eureka Server不剔除已关停的节点的问题
- LeetCode 94 Binary Tree Inorder Traversal(二叉树中序遍历)
- 设计模式
- [第二章]eval函数小结
- JavaScript 万物皆对象?
- Python文件操作
- 贪心算法——C++实现经典案例——初级
- jzoj P1520 破碎的路径
- 用 sklearn 线性回归 拟合房价与房屋尺寸关系
- Caused by: java.lang.ClassNotFoundException: com.mchange.v2.log.MLog