66. 二叉树的前序遍历
2018-02-07 20:14
176 查看
点击打开链接
二叉树的遍历分为前序,中序,后序,层序四种。
题目要求是前序遍历,有递归和非递归两种。相对而言,递归的方法更简短。
(一)递归
void PreOrder(BiNode *bt)
{
if(bt == NULL) return;
else
{
cout << bt->data << " ";
PreOrder(bt->lchild);
PreOrder(bt->rchild);
}
}
(二)非递归
运用栈的思想,将树拆分,按照“根左右”的方法放入栈中,先将根存入,将最左面的子树全都压到栈中,这样出栈的顺序就会符合前序遍历从最左面的根开始进行遍历。
class Solution {
public:
/*
* @param root: A Tree
* @return: Preorder in ArrayList which contains node values.
*/
vector<int> preorderTraversal(TreeNode *root) {
// write your code here
vector<int> t;
TreeNode *tree[100];
int top = -1;
TreeNode* p;
if(root != NULL)
{
tree[++top] = root;
while(top > -1)
{
p = tree[top];
t.push_back(p->val);
top--;
if(p->right != NULL)
{
tree[++top] = p->right;
}
if(p->left != NULL)
{
tree[++top] = p->left;
}
}
}
return t;
}
};
2018/2/7
二叉树的遍历分为前序,中序,后序,层序四种。
题目要求是前序遍历,有递归和非递归两种。相对而言,递归的方法更简短。
(一)递归
void PreOrder(BiNode *bt)
{
if(bt == NULL) return;
else
{
cout << bt->data << " ";
PreOrder(bt->lchild);
PreOrder(bt->rchild);
}
}
(二)非递归
运用栈的思想,将树拆分,按照“根左右”的方法放入栈中,先将根存入,将最左面的子树全都压到栈中,这样出栈的顺序就会符合前序遍历从最左面的根开始进行遍历。
class Solution {
public:
/*
* @param root: A Tree
* @return: Preorder in ArrayList which contains node values.
*/
vector<int> preorderTraversal(TreeNode *root) {
// write your code here
vector<int> t;
TreeNode *tree[100];
int top = -1;
TreeNode* p;
if(root != NULL)
{
tree[++top] = root;
while(top > -1)
{
p = tree[top];
t.push_back(p->val);
top--;
if(p->right != NULL)
{
tree[++top] = p->right;
}
if(p->left != NULL)
{
tree[++top] = p->left;
}
}
}
return t;
}
};
2018/2/7
相关文章推荐
- LintCode 66 二叉树的前序遍历
- LintCode | 66. 二叉树的前序遍历
- Lintcode 66 二叉树的前序遍历
- 66.二叉树的前序遍历
- [LintCode]66.二叉树的前序遍历
- 66. 二叉树的前序遍历
- LintCode之66 二叉树的前序遍历
- lintcode,二叉树的前序遍历
- 已知二叉树的前序/后序遍历和中序遍历,求后序/前序遍历
- 二叉树的前序遍历
- 二叉树的前序遍历
- Java二叉树(二)--根据前序和中序遍历求后序遍历
- 二叉树 前序遍历的非递归实现 中序遍历的非递归实现 后序遍历的非递归实现 创建二叉树
- LeetCode:144_Binary Tree Preorder Traversal | 二叉树的前序遍历 | Medium
- 二叉树的前序遍历、中序遍历和后序遍历及其算法
- 根据树的前序遍历与中序遍历构建二叉树
- 二叉树的前序遍历
- 以二叉树的前序遍历为例,递归和非递归方式的实现
- 根据前序和中序的遍历序列重建二叉树
- LeetCode Binary Tree Preorder Traversal 前序遍历二叉树 递归和非递归解法