美文网首页
二叉排序树建立

二叉排序树建立

作者: lesliefang | 来源:发表于2018-09-09 13:17 被阅读11次
1.pic.jpg
#include <iostream>
#include <stdio.h>

using namespace std;

struct node {
    int data;
    node* left;
    node* right;
};

// 注意 root 这里传的是 引用
void insert(node* &root, int x) {
    if(root == NULL) {
        root = new node;
        root->data = x;
        root->left = NULL;
        root->right = NULL;
        return;
    }

    if(root->data == x){
        return;
    } else if(x < root->data) {
        insert(root->left, x);
    } else {
        insert(root->right, x);
    }
}

// 2 1 6 3 5 4 9 7 8 10
void preOrder(node* root) {
    if(root == NULL){
        return;
    }
    printf("%d ", root->data);
    preOrder(root->left);
    preOrder(root->right);
}

// 1 4 5 3 8 7 10 9 6 2
void postOrder(node* root) {
    if(root == NULL){
        return;
    }
    postOrder(root->left);
    postOrder(root->right);
    printf("%d ", root->data);
}

// 10
// 2 6 9 3 5 7 10 8 4 1
int main() {
    int n;
    scanf("%d",&n);

    int x;
    node* root = NULL;
    for(int i=0;i<n;i++) {
        scanf("%d", &x);
        insert(root, x);
    }

    preOrder(root);
    printf("\n");
    postOrder(root);

    return 0;
}

非引用写法

node* insert(node* root, int x) {
    if(root == NULL) {
        root = new node;
        root->data = x;
        root->left = NULL;
        root->right = NULL;
        return root;
    }

    if(root->data == x){
        return root;
    } else if(x < root->data) {
        root->left = insert(root->left, x);
    } else {
        root->right = insert(root->right, x);
    }
    return root;
}

node* root = NULL;
for(int i=0;i<n;i++) {
    scanf("%d", &x);
    root = insert(root, x);
}

录了个上传头条的小视频帮助理解 https://pan.baidu.com/s/12GPbJNNtDBif3TkSxoHZJQ

相关文章

  • 2018-06-19/20 机试准备09

    数据结构 四、二叉排序树 对二叉排序树进行中序遍历 结果必然是一个递增序列 所以通过建立二叉排序树可以对无序序列进...

  • 基于C++实现的二叉排序树

    一、使用说明 1.1 项目简介 依次输入关键字并建立二叉排序树,实现二叉排序树的插入和查找功能。 1.2 项目功能...

  • 基于C++实现的二叉排序树

    一、使用说明 1.1 项目简介 依次输入关键字并建立二叉排序树,实现二叉排序树的插入和查找功能。 1.2 项目功能...

  • 数据结构题目57:建立一棵二叉排序树

    题目:已知K=(5, 10, 5, 20, 17, 12, 19, 2),建立一棵二叉排序树。 解题思路:建立二叉...

  • 机试常用算法和题型-树专题

    静态创建新结点、构造二叉树实现前序中序遍历还原 二叉排序树查找、插入、构造科学方法 二叉排序树建立,非递归遍历方法...

  • 平衡二叉树(AVL树)

    一、概念 平衡二叉树建立在二叉排序树的基础上,目的是使二叉排序树的平均查找长度更小,即让各结点的深度尽可能小,因此...

  • 二叉排序树建立

    非引用写法 录了个上传头条的小视频帮助理解 https://pan.baidu.com/s/12GPbJNNtD...

  • 二叉树应用

    1 项目要求 建立一棵二叉树 前序、中序、层次非递归遍历该二叉树 判断该二叉树是否为二叉排序树 如果是二叉排序树,...

  • 详解Java二叉排序树

    姓名: 李小娜 [嵌牛导读] :这篇文章主要介绍了Java二叉排序树,包括二叉排序树的定义、二叉排序树的性质、二叉...

  • Java数据结构:二叉排序树(BST)

    一、基本介绍 二叉排序树 BST: (Binary Sort(Search) Tree), 对于二叉排序树的任何一...

网友评论

      本文标题:二叉排序树建立

      本文链接:https://www.haomeiwen.com/subject/quorgftx.html