LeetCode算法题集-144. Binary Tree Preorder Traversal(二叉树的前序遍历,不用递归实现)
2018-02-05 10:10
351 查看
给定一个二叉树,返回它的前序遍历的节点值。
英语原文:
Given a binary tree, return the preorder traversal of its nodes' values.
比如:
给定二叉树(数组形式)
返回数组
注: 递归实现就太简单了,你能不能用循环实现?
解答:对于树的遍历不用递归的话一般就用一个栈来记录节点信息:
英语原文:
Given a binary tree, return the preorder traversal of its nodes' values.
比如:
给定二叉树(数组形式)
[1,null,2,3],
1 \ 2 / 3
返回数组
[1,2,3].
注: 递归实现就太简单了,你能不能用循环实现?
解答:对于树的遍历不用递归的话一般就用一个栈来记录节点信息:
/** * 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) { vector<int> result; stack<TreeNode*> record_stack; TreeNode* cur = root; while (true) { if (cur != NULL) { result.push_back(cur->val); record_stack.push(cur); cur = cur->left; } else if (record_stack.size() > 0) { cur = record_stack.top(); cur = cur->right; record_stack.pop(); if (cur == NULL && record_stack.size()<=0) break; } else break; } return result; } };
相关文章推荐
- C++实现二叉树 前序遍历, 后序遍历, 中序遍历, 层序遍历(不用递归)
- 不用栈和递归,实现线索化二叉树的遍历(还没人看的话就沉了吧)
- 以二叉树的前序遍历为例,递归和非递归方式的实现
- 二叉树的前序遍历的递归实现与非递归实现
- 二叉树经典面试题解析一:用非递归实现二叉树的前序遍历,中序遍历,后序遍历
- 递归和非递归俩种方法实现二叉树的前序遍历
- leetcode | 二叉树的前序遍历、中序遍历、后续遍历的非递归实现
- 二叉树的前序遍历---非递归实现
- 递归和非递归俩种方法实现二叉树的前序遍历
- 二叉树 前序遍历的非递归实现 中序遍历的非递归实现 后序遍历的非递归实现 创建二叉树
- 面试题 二叉树的前序遍历,中序遍历,后序遍历(递归实现)
- 二叉树的深度与广度遍历及前序遍历递归非递归实现
- 请用递归和非递归俩种方法实现二叉树的前序遍历。
- 算法习题43:递归和非递归实现二叉树的前序遍历
- 43.递归和非递归俩种方法实现二叉树的前序遍历。
- 请用递归和非递归俩种方法实现二叉树的前序遍历。
- java实现的二叉树(前序、中序、后序)递归和非递归遍历,包含层序遍历
- 非递归前序遍历二叉树-代码实例讲解
- 二叉树的三种遍历的非递归实现
- 二叉树的先序、中序、后序的递归及非递归实现,以及层次遍历的实现: