题解 | #二叉排序树#纯c,非递归

二叉排序树

https://www.nowcoder.com/practice/30a0153649304645935c949df7599602

#include <stdio.h>
#include <stdlib.h>
typedef struct tnode {
    int x;
    struct tnode* lchild;
    struct tnode* rchild;
} node, *pnode;
void creat_find(int n) {
    pnode r;
    pnode root = malloc(sizeof(node));
    r = root;
    scanf("%d", &root->x);
    root->lchild = NULL;
    root->rchild = NULL;
    printf("-1\n");
    while (n > 1) {
        pnode a = malloc(sizeof(node));
        scanf("%d", &a->x);
        a->lchild = NULL;
        a->rchild = NULL;

        while (1) {
            if (a->x > r->x) {
                if (r->rchild == NULL) {
                    printf("%d\n", r->x);
                    r->rchild = a;
                    r = root;
                    break;
                } else
                    r = r->rchild;
            } else {
                if (r->lchild == NULL) {
                    printf("%d\n", r->x);
                    r->lchild = a;
                    r = root;
                    break;
                } else
                    r = r->lchild;
            }
        }
        n--;
    }

}
int main() {
    int n;
    scanf("%d", &n);
    creat_find(n);
    return 0;

}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务