二叉树的遍历

本文主要讲解二叉树的遍历,有三种遍历 分为前序遍历、中序遍历和后序遍历,方法主要有递归遍历和非递归遍历,其中非递归遍历主要借助于栈来实现。下面具体介绍。
二叉树的前序遍历
前序遍历的遍历顺序是根节点->左子节点->右子节点.
递归实现:
/* Definition for binary tree 树的节点结构
struct TreeNode {
int value;
TreeNode *leftchild;
TreeNode *rightchild;
TreeNode(int x) : val(x), leftchild(NULL), rightchild(NULL) {}
};*/
void prederTraversal(TreeNode * root){
if(root!=NULL)
{
cout<value<<” “;
prederTraversal(root->leftchild);
prederTraversal(root->rightchild);
}
}
非递归实现:
对于任一结点,其可看做是根结点,因此可以直接访问,访问完之后,若其左孩子不为空,按相同规则访问它的左子树;当访问其左子树时,再访问它的右子树。因此其处理过程如下:
对于任一结点P:
1)访问结点P,并将结点P入栈;
2)判断结点P的左孩子是否为空,若为空,则取栈顶结点并进行出栈操作,并将栈顶结点的右孩子置为当前的结点P,循环至1);若不为空,则将P的左孩子置为当前的结点P;
3)直到P为NULL并且栈为空,则遍历结束。
/* Definition for binary tree 树的节点结构
struct TreeNode {
int value;
TreeNode *leftchild;
TreeNode *rightchild;
TreeNode(int x) : val(x), leftchild(NULL), rightchild(NULL) {}
};*/
void prederTraversal(TreeNode * root){
stack

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值