二叉树静态遍历

2020-03-07  本文已影响0人  km15

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);
        }

    }
}
上一篇下一篇

猜你喜欢

热点阅读