二叉树的遍历——先序遍历、中序遍历、后序遍历
遍历二叉树
(本文的二叉树均使用指针方式构建)
先序遍历
操作定义:
若二叉树为空,则空操作; 否则:
- 访问根节点;
- 先序遍历左子树;
- 先序遍历右子树;
代码:
void preOrderTraveral(treeNode* node){
if (node == NULL){
return;
}
cout << node->data;
preOrderTraveral(node->lchild);
preOrderTraveral(node->rchild);
}
中序遍历
操作定义:
若二叉树为空,则空操作; 否则:
- 中序遍历左子树;
- 访问根节点;
- 中序遍历右子树;
代码:
void inOrderTraveral(treeNode* node){
if (node == NULL){
return;
}
inOrderTraveral(node->lchild);
cout << node->data;
inOrderTraveral(node->rchild);
}
后序遍历
操作定义:
若二叉树为空,则空操作; 否则:
- 后序遍历左子树;
- 后序遍历右子树;
- 访问根节点;
代码:
void postOrderTraveral(treeNode* node){
if (node == NULL){
return;
}
postOrderTraveral(node->lchild);
postOrderTraveral(node->rchild);
cout << node->data;
}
举例:
对于如图所示二叉树:
其先序遍历、中序遍历、后序遍历分别为:
还没有评论,来说两句吧...