二叉搜尋樹的性質:
1)若它的左子樹不為空,則左子樹上所有節點都小於根節點的值。
2)若它的右子樹不為空,則右子樹上所有節點都大於根節點的值。
3)它的左右子樹也分別為二叉搜尋樹。
二叉搜尋樹如下圖:
二叉搜尋樹的建立過程:
先找到需要插入值得父節點,比較父節點與插入值得大小,確定插入的位置。
(找父節點,需要通過根節點與插入值得大小進行比較,確定根節點的左右孩子位置,繼續迴圈,直到找到父節點的單個孩子節點為葉子結點。)
標頭檔案:二叉搜尋樹.h
#pragma once
#include
#include
#include
typedef int key;
typedef struct bst
bst;
#if 1
//建立二叉樹
int creattree(bst**tree, key aa)
parent = root; //雙親節點指向根節點。
//根節點的值大於所要插入的值,要插入的值在根節點的左邊。
if (root->key > aa)
else}}
bst*pp = (bst*)malloc(sizeof(bst));
pp->key = aa;
pp->left = pp->right = null;
if (parent == null)
if (aa < parent->key)
parent->left = pp;
else
parent->right = pp;
return 0;
}#endif
void test()
;int n = sizeof(aa) / sizeof(key);
//bst*pp = null;
creattree(&tree, 5);
creattree(&tree, 3);
creattree(&tree, 4);
creattree(&tree, 1);
creattree(&tree, 7);
creattree(&tree, 8);
creattree(&tree, 2);
printf("\n");
原始檔:test.cpp
#include"二叉搜尋樹.h"
#include
int main()
搜尋二叉樹建立
time limit 1000 ms memory limit 65536 kib problem description 在樹結構中,有一種特殊的二叉樹叫做排序二叉樹,直觀的理解就是 1 每個節點中包含有乙個關鍵值 2 任意乙個節點的左子樹 如果存在的話 的關鍵值小於該節點的關鍵值 3 任意乙個節...
二叉樹 二叉搜尋樹的建立和插入
二叉搜尋樹又名二叉排序樹。大概簡略的思維導圖如下,方便記憶特性 基本二叉搜尋樹建立過程如下 資料結構如下 typedef struct tree tree,treenode node 為二叉樹根節點,insert為插入的節點 void create tree treenode node,tree i...
二叉樹 還原二叉樹 二叉搜尋樹
先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 a b d f g h i e c 中序遍歷 f d h g i b e a c 如上,根據先序遍...