1、先序遍历
void preorder(int root) {
if (root == -1) {
return;
}
printf("%d", Node[root]);
preorder(Node[root].lchid);
preorder(Noder[root].rchild);
}
2、中序遍历
void inorder(int root) {
if (root == -1) {
return;
}
inorder(Node[root].lchid);
printf("%d", Node[root]);
inorder(Noder[root].rchild);
}
3、后序遍历
void postorder(int root) {
if (root == -1) {
return;
}
postorder(Node[root].lchid);
postorder(Noder[root].rchild);
printf("%d", Node[root]);
}
4、层次遍历
void layerorder(int root) {
queue<int> q; //此处队列存放节点下标
q.push(root); //将根节点入队
while (!q.empty()) {
int now = q.front(); //取出队首元素
q.pop();
printf("%d ", Node[now].data); //访问队首元素
if (Node[now].lchild != -1) {
q.push(Node[now].lchild);
}if (Node[node].rchild != -1) {
q.push(Node[now].rchild);
}
}
}
网友评论