C 二叉查詢樹遍歷

2021-10-07 03:24:36 字數 1723 閱讀 3993

佇列模板實現

二叉查詢樹實現

按照根結點的遍歷順序劃分

1.前序遍歷:根->左->右

2.中序遍歷:左->根->又

3.後序遍歷:左->右->根

前序遍歷:e,b,a,d,c,g,f,h

中序遍歷:a,b,c,d,e,f,g,h

後序遍歷:a,c,d,b,f,h,g,e

//獲取整個樹中所有的鍵

void

preergodic()

//獲取指定樹x的所有鍵,並放到keys佇列中

void

preergodic

(node

* x)

//把x結點的key放入到keys中

std::cout<

>key<<:endl>

//遞迴遍歷x結點的左子樹

if(x-

>left!=

nullptr

)//遞迴遍歷x結點的右子樹

if(x-

>right!=

nullptr)}

//中序遍歷

//獲取整個樹中所有的鍵

void

midergodic()

//獲取指定樹x的所有鍵,並放到keys佇列中

void

midergodic

(node

* x)

//遞迴遍歷x結點的左子樹

if(x-

>left!=

nullptr

)//把x結點的key放入到keys中

std::cout<

>key<<:endl>

//遞迴遍歷x結點的右子樹

if(x-

>right!=

nullptr)}

//後序遍歷

//獲取整個樹中所有的鍵

void

afterergodic()

//獲取指定樹x的所有鍵,並放到keys佇列中

void

afterergodic

(node

* x)

//遞迴遍歷x結點的左子樹

if(x-

>left!=

nullptr

)//遞迴遍歷x結點的右子樹

if(x-

>right!=

nullptr

)//把x結點的key放入到keys中

std::cout<

>key<<:endl>

}

從第一層到最後一層逐層遍歷:

1.建立乙個輔助佇列遍歷結點

2.將根結點傳入佇列中

3.迴圈如果佇列不為空取出佇列中的結點,輸出該結點的key值

4.判斷當前結點的左子節點是否為空,如果不為空則將左子節點插入佇列

5.判斷當前結點的右子節點是否為空,如果不為空則將右子節點插入佇列

層序遍歷:e,b,g,a,d,f,h,c

//層序遍歷

void

layerergodic()

std::cout << std::endl;

}

二叉樹遍歷查詢

1 前序遍歷 先輸出父節點,再遍歷左子樹和右子樹 2 中序遍歷 先遍歷左子樹,再輸出父節點,再遍歷右子樹 3 後序遍歷 先遍歷左子樹,再遍歷右子樹,最後輸出父節點 4 小結 看輸出父節點的順序,就確定是前序,中序還是後序 package com.atguigu.tree public class b...

二叉查詢樹 C

include stdafx.h include using namespace std 二叉查詢樹的性質 1.二叉排序樹或為空樹 2.若左子樹不為空,則左子樹中所有節點的值均小於或等於根節點 3.若右子樹不為空,則右子樹中所有節點的值均大於或等於跟節點 4.左右子樹也為二叉排序樹 5.二叉排序樹採...

C 二叉查詢樹

二叉排序樹 binary sort tree 又稱二叉查詢樹 binary search tree 亦稱二叉搜尋樹。二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於或等於它的根結點...