前序遍历二叉树
2017-10-02 10:59
176 查看
递归
vector<int> preorderTraversal(TreeNode *root) {
vector<int> result;
if(root==NULL)
return result;
PreorderCore(root,result);
return result;
}
void PreorderCore(TreeNode* root,vector<int>& result){
result.push_back(root->val);
if(root->left)
PreorderCore(root->left,result);
if(root->right)
PreorderCore(root->right,result);
}
非递归:
vector<int> preorderTraversal(TreeNode *root) {
vector<int> result;
if(root==NULL)
return result;
stack<TreeNode *> trees;
trees.push(root);
while(!trees.empty()){
TreeNode* pNode=trees.top();
trees.pop();
result.push_back(root->val);
if(pNode->right!=NULL)
trees.push(root->right);
if(pNode->left!=NULL)
trees.push(root->left);
}
return result;
}
vector<int> preorderTraversal(TreeNode *root) {
vector<int> result;
if(root==NULL)
return result;
PreorderCore(root,result);
return result;
}
void PreorderCore(TreeNode* root,vector<int>& result){
result.push_back(root->val);
if(root->left)
PreorderCore(root->left,result);
if(root->right)
PreorderCore(root->right,result);
}
非递归:
vector<int> preorderTraversal(TreeNode *root) {
vector<int> result;
if(root==NULL)
return result;
stack<TreeNode *> trees;
trees.push(root);
while(!trees.empty()){
TreeNode* pNode=trees.top();
trees.pop();
result.push_back(root->val);
if(pNode->right!=NULL)
trees.push(root->right);
if(pNode->left!=NULL)
trees.push(root->left);
}
return result;
}
相关文章推荐
- 重建二叉树(根据前序和中序遍历结果)
- 144. Binary Tree Preorder Traversal 二叉树的前序遍历
- 二叉树的前序遍历
- Lintcode 66 二叉树的前序遍历
- leetcode刷题7:前序遍历二叉树
- 二叉树的前序遍历
- 由树的前序遍历,中序遍历建立一颗二叉树,并以后续遍历的方式输出其元素
- 根据前序和中序遍历序列重构二叉树 代码完整版
- 二叉树的前序遍历、中序遍历和后序遍历的递归和非递归算法
- 数据结构之二叉树的前序遍历、中序遍历、后序遍历、层序遍历
- 已知二叉树的前序和中序遍历,重构该二叉树
- 非递归前序遍历二叉树
- 二叉树的前序遍历
- [c++]已知二叉树的前序遍历与中序遍历结果(二叉树中不含重复数字),重构二叉树
- 二叉树的前序遍历
- 二叉树的前序遍历
- lintcode--二叉树的前序遍历
- 构建二叉树(据前序遍历结果)--- 前序遍历二叉树(递归与非递归)
- leetcode | 二叉树的前序遍历、中序遍历、后续遍历的非递归实现
- 以二叉树的前序遍历为例,递归和非递归方式的实现