LeetCode 144 Binary Tree Preorder Traversal(二叉树前序遍历)
来源:互联网 发布:网络对学生的影响 编辑:程序博客网 时间:2024/05/24 05:21
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [1,2,3]
.
Note: Recursive solution is trivial, could you do it iteratively?
题目大意:写出二叉树的非递归前序遍历的方法。
解题思路:和中序遍历的那一道题类似,处理过程如下:
对于任意节点N:
1. 访问N并将N入栈
2. 判断结点N的左孩子是否为空,若为空,则取栈顶结点并进行出栈操作,并将栈顶结点的右孩子置为当前结点N,循环至1;若不为空,则将N的左孩子置为当前结点N
3. 直到N为空且栈也为空,遍历结束
参考资料:http://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html
代码如下:
/** * 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> preorderTraversal(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); ans.push_back(now->val); now = now->left; } if(stk.size()){ now = stk.top(); stk.pop(); now = now->right; } } return ans; }};
阅读全文
0 0
- LeetCode 144 Binary Tree Preorder Traversal(二叉树前序遍历)
- Leetcode: Binary Tree Preorder Traversal(二叉树前序遍历)
- [LeetCode]144. Binary Tree Preorder Traversal--二叉树前序遍历
- leetcode 144. Binary Tree Preorder Traversal 二叉树前序遍历 + DFS
- leetcode---binary-tree-preorder-traversal---树前序遍历
- LeetCode Binary Tree Preorder Traversal (二叉树先序遍历非递归)
- Leetcode Binary Tree Preorder Traversal 二叉树先序遍历
- 144.leetcode Binary Tree Preorder Traversal(medium)[二叉树先序遍历]
- [leetcode-二叉树先序遍历]--144.Binary Tree Preorder Traversal
- LeetCode 144 Binary Tree Preorder Traversal(二叉树的前序遍历)+(二叉树、迭代)
- 【二叉树先序遍历】Binary Tree Preorder Traversal
- Binary Tree Preorder Traversal (leetcode 144)
- 二叉树前序遍历Binary Tree Preorder Traversal (Java)
- 【LeetCode】Binary Tree Preorder Traversal 二叉树前序遍历递归以及非递归算法
- LeetCode 144 Binary Tree Preorder Traversal (先序遍历二叉树)
- 144.Binary Tree Preorder Traversal(二叉树先序遍历)
- binary-tree-preorder-traversal(先序遍历二叉树)
- LeetCode OJ 之 Binary Tree Preorder Traversal (二叉树的前序遍历)
- adb server无法启动方法,结束占用端口的进程
- 06--JDBC各种连接方式的对比
- LINUX 文件系统的总体结构
- c++头文件
- java构造器内部的多态方法
- LeetCode 144 Binary Tree Preorder Traversal(二叉树前序遍历)
- OpenDaylight的Helium(氦)版本安装
- OpenDaylight与OpenStack结合验证
- 计算机图形学-基于OpenGL的直线扫描程序
- OpenMP
- (139)lightmass基础知识
- ppt画的图片存储为pdf格式(本文中为300像素)
- BZOJ2324[ZJOI2011]营救皮卡丘
- perl里如何重命名名称带^M的目录