二叉树(BST)之创建二叉搜索树
生活随笔
收集整理的這篇文章主要介紹了
二叉树(BST)之创建二叉搜索树
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
二叉樹搜索基本概念
二叉搜索樹,以這樣一種方式構(gòu)成,在任何層、任何節(jié)點的直接左節(jié)點的存儲值總是小于或等于其節(jié)點本身的值。所以節(jié)點的左子樹總包含那些存儲值小于或等于它的節(jié)點。同理,節(jié)點的右子樹總包含那些存儲值大于或等于它的節(jié)點。下述代碼從根節(jié)點開始,并將當(dāng)前節(jié)點的數(shù)據(jù)部分與正在插入的新數(shù)據(jù)結(jié)點進行了比較。如果新節(jié)點的數(shù)據(jù)小于當(dāng)前節(jié)點的數(shù)據(jù)值,通過左子節(jié)點指針進行**遞歸調(diào)用相同函數(shù)**;否則,通過右子節(jié)點**遞歸調(diào)用相同函數(shù)**。 #include<stdio.h> #include<stdlib.h> # define N sizeof(struct point)//用宏來存結(jié)構(gòu)體長度struct point {int date;struct point* left;struct point* right; };struct point* creatnode(int data) {struct point* p;p = (struct point*)malloc(N);//動態(tài)申請空間p->date = data;//存入信息,并將左右子樹為空p->left = NULL;p->right = NULL;return p; }void insertnode(struct point** root, struct point* n) // struct point** root 是指向指針的指針存的是指針變量的地址,(不懂的可以看下我之前的博客){struct point* temp = *root;if (temp == NULL){*root = n;}else{if (n->date < temp->date)insertnode(&temp->left, n);else insertnode(&temp->right, n);} }int main() {struct point* root = NULL;for (int i = 0; i < 5; i++)insertnode(&root, creatnode(i));//將數(shù)據(jù)直接轉(zhuǎn)化為結(jié)點來處理return 0; }總結(jié)
以上是生活随笔為你收集整理的二叉树(BST)之创建二叉搜索树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逆序输出螺旋字符矩阵(三种方法)
- 下一篇: 一篇带你了解函数指针