写在前面
二叉树的三种遍历是数据结构与算法必须要回的知识,很多人光会理论而不懂代码的实现,或者自己很难亲自实现代码的编写。那么就需要好好思考为什么自己实现不了,是递归没写好还是对语言的不熟悉又或者是其他的原因呢?
三种遍历的简单概述
书上说的很清楚二叉树的遍历是如何实现的,那么我在这里就简单的说一下二叉树的先序遍历。先序遍历其实就是每次先访问一棵树的根节点,再接着访问根节点的左子树,再访问根节点的右子树,依次递归下去,每棵子树也有根节点和左右子树…
简答例题(请先手写出答案再看代码的具体实现)
代码的具体实现(C语言)
#include <iostream>
using namespace std
;
typedef struct node
{
int data
;
node
* left
;
node
* right
;
} Node
;
void preorder(Node
* node
)
{
if(node
!= NULL)
{
printf("%d ",node
->data
);
preorder(node
->left
);
preorder(node
->right
);
}
}
void inorder(Node
* node
)
{
if(node
!= NULL)
{
inorder(node
->left
);
printf("%d ",node
->data
);
inorder(node
->right
);
}
}
void postorder(Node
* node
)
{
if(node
!= NULL)
{
postorder(node
->left
);
postorder(node
->right
);
printf("%d ",node
->data
);
}
}
int main()
{
Node n1
,n2
,n3
,n4
;
n1
.data
=5;
n1
.left
=&n2
;
n1
.right
=&n3
;
n2
.data
=7;
n2
.left
=NULL;
n2
.right
=NULL;
n3
.data
=2;
n3
.left
=&n4
;
n3
.right
=NULL;
n4
.data
=9;
n4
.left
=NULL;
n4
.right
=NULL;
printf("先序遍历为:");
preorder(&n1
);
printf("\n");
printf("中序遍历为:");
inorder(&n1
);
printf("\n");
printf("后序遍历为:");
postorder(&n1
);
printf("\n");
return 0;
}
例题答案