搜尋二叉樹的建立

2021-08-28 17:19:13 字數 1304 閱讀 3393

二叉搜尋樹的性質:

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 如上,根據先序遍...