二叉查詢樹的插入與遍歷

2021-06-21 16:34:21 字數 2000 閱讀 2897

二叉排序樹(binary sort tree)又稱二叉查詢樹(binary search tree),亦稱二叉搜尋樹。 它或者是一棵空樹;或者是具有下列性質的二叉樹

:(1)若左子樹不空,則左子樹上所有結點的值均小於它的根結

點的值;

(2)若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;

(3)左、右子樹也分別為二叉排序樹;

插入操作:

首先執行查詢演算法,找出被插結點的父親結點。

判斷被插結點是其父親結點的左、右兒子。將被插結點作為

葉子結點插入。

若 二叉樹為空。則首先單獨生成根結點。

注意:新插入的結點總是

葉子結點。

#include #include typedef struct treenode *tree;

struct treenode

treenode;

//二叉搜尋樹 的遞迴插入

tree insert(tree root,int element)

else if(root->num >= element)

else

return root;

}//二叉搜尋樹 的迭代插入

tree insert2(tree root,int element)

while(tmp)

else

}if(flag)

before->right = node;

else

before->left = node;

return root;

}//遞迴前序遍歷

void preorder(tree root)

}//迭代前序遍歷 下面是c++**

/* 思想:從根節點開始,先列印節點資訊(獲取資料),如果節點有右孩子,則有孩子入棧;

如果有左孩子,當前指標指向左孩子,沒有左孩子的話,出棧。繼續這個過程,直到獲取棧元素的時候棧為空。

void preorder(binarytreenode* proot)

} } */

//遞迴中序遍歷

void inorder(tree root)}/*

void inorder(binarytreenode* proot)

//若進行到這裡左子樹為空

if (!s.empty()) //stack不空時退棧,然後訪問該元素

} while (p!=null||!s.empty());

//這裡的p==null表示右子樹為空,然後堆疊如果也空的話,才是處理完畢

} */

//遞迴後序遍歷

void postorder(tree root)

}/*迭代後序遍歷

void postorder(binarytreenode* proot)

bool continuel=true; //繼續迴圈標誌,用於l改為r的時候就開始向右遍歷

while (continuel && !s.empty()) //用乙個break語句也能實現迴圈標誌continuel的功能

else

visit(p); //如果標記為r,表示右子樹遍歷完

} }while (!s.empty());

} */

int main(int argc,char **argv)

; int i;

tree tree=null;

for(i=0; i<10; i++)

printf("preorder:\n");

preorder(tree);

printf("\ninorder\n");

inorder(tree);

printf("\npostorder\n");

postorder(tree);

return 0;

}

二叉搜尋樹的插入 刪除與遍歷

二叉搜尋樹是有序的,插入之後要使插入後的樹還是有序的,就必須比較每個節點的值,然後再選擇合適的位置插入,首先先將樹的節點設計如下 typedef int elemtype typedef struct bstnode bstnode 插入的方式實現了兩種,一種是遞迴方式,一種是非遞迴實現。非遞迴 購...

二叉樹的遍歷 查詢 插入以及刪除

二叉樹的主要儲存方式是鏈結儲存,標準儲存結構也稱為二叉鍊錶。二叉鍊錶結點類的定義 struct node 常見的二叉樹遍歷方式下面給個例項來表示具體的遍歷方式 前序遍歷訪問順序 訪問根結點 左子樹 右子樹。首先訪問根結點a,然後左子樹l 因為l也採用前序遍歷的方式,則首先訪問l的左子樹b,b沒有孩子...

jS生成二叉樹,二叉樹的遍歷,查詢以及插入

js遞迴,二叉樹的操作 遞迴演算法n次冪 function foo n else nodes 遞迴樹形節點 function output node output nodes 二叉樹 var tree right right right 二叉樹遍歷 遞迴演算法,容易導致執行棧溢位 function ...