佇列模板實現
二叉查詢樹實現
按照根結點的遍歷順序劃分
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 若右子樹不空,則右子樹上所有結點的值均大於或等於它的根結點...