题解 | #二叉排序树#

二叉排序树

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

//关于父节点可采用链表中pre和rear指针的思想,采用正常的循环即可
#include "stdio.h"
using namespace std;
struct TreeNode{
    int data;
    TreeNode *leftChild;
    TreeNode *rightChild;
};
void insertBST(TreeNode * &root,int data){
    TreeNode *node = new TreeNode;//建在堆中
    node->data = data;
    node->leftChild = NULL;
    node->rightChild = NULL;
    if(root == NULL){
        root = node;
        printf("%d\n",-1);
    } else{
        TreeNode *pre;
        TreeNode *pos;
        pos = root;
        bool flag = true;
        while (pos != NULL){
            if(pos->data > data){
                pre = pos;
                pos = pos->leftChild;
                flag = true;
            } else{
                pre = pos;
                pos = pos->rightChild;
                flag = false;
            }
        }
        if(flag)
            pre->leftChild = node;
        else
            pre->rightChild = node;
        printf("%d\n",pre->data);
    }
}

int main(){
    int N,data;
    scanf("%d",&N);
    TreeNode *root = NULL;
    for (int i = 0; i < N; ++i) {
        scanf("%d",&data);
        insertBST(root, data);
    }
}

全部评论

相关推荐

Rena1ssanc...:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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