二叉搜索树(BFS)总结
滿二叉樹
定義:高度為h,并且由2{h} –1個結(jié)點的二叉樹,被稱為滿二叉樹。
完全二叉樹
定義:一棵二叉樹中,只有最下面兩層結(jié)點的度可以小于2,并且最下一層的葉結(jié)點集中在靠左的若干位置上。這樣的二叉樹稱為完全二叉樹。
特點:葉子結(jié)點只能出現(xiàn)在最下層和次下層,且最下層的葉子結(jié)點集中在樹的左部。顯然,一棵滿二叉樹必定是一棵完全二叉樹,而完全二叉樹未必是滿二叉樹。
二叉搜索樹
定義:在二叉搜索樹中,任取一個節(jié)點A,A的值不小于它左子樹上的任何值、它右子樹上的每個值都大于A。
插入節(jié)點、刪除樹
/*二叉搜索樹數(shù)據(jù)類型*/ struct TreeNode {int data;TreeNode* left;TreeNode* right; }; /*向二叉搜索樹中添加一個節(jié)點*/ TreeNode* InsertTree(TreeNode* root, int value){//遞歸調(diào)用,所以要記得返回類型TreeNode* newNode;if(root == nullptr){newNode = new TreeNode;newNode->data = value;newNode->left = nullptr;newNode->right = nullptr;return newNode;}if(value < root->data)root->left = InsertTree(root->left, value);if(value > root->data)root->right = InsertTree(root->right, value);return root; } /*刪除二叉樹*/ void DeleteTree(TreeNode* root){if(root->left != nullptr)DeleteTree(root->left);if(root->right != nullptr)DeleteTree(root->right);delete root;return; }廣度優(yōu)先遍歷(BFS)
算法流程:
1. 根節(jié)點入隊
2. 循環(huán)判斷當前隊列非空,訪問隊首,出隊
3. 如果左子樹非空,左子樹根節(jié)點入隊
4. 如果右子樹非空,右子樹根節(jié)點入隊
代碼:
深度優(yōu)先遍歷(DFS)
深度優(yōu)先遍歷。有四種遍歷方式:先根,后根,左子樹優(yōu)先,右子樹優(yōu)先
(1)先根順序遍歷:a. 訪問根節(jié)點 b. 遍歷左子樹 c. 遍歷右子樹
(2)后根順序遍歷:a. 遍歷左子樹 b. 遍歷右子樹 c. 訪問根節(jié)點
(3)左子樹優(yōu)先遍歷:a. 遍歷左子樹 b. 訪問根節(jié)點 c.遍歷右子樹
(4)右子樹優(yōu)先遍歷:a.遍歷右子樹 b.訪問根節(jié)點 c.遍歷左子樹
總結(jié)
以上是生活随笔為你收集整理的二叉搜索树(BFS)总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle中提取日期时间的特定部分,E
- 下一篇: 深度神经网络模型压缩方法总结