/**
關於二叉樹與圖
1.從無到有實現二叉樹和圖
2.在二叉樹和圖中檢索/查詢target value
二叉搜尋樹:binary search tree
所要滿足的條件:對於二叉搜尋樹中任意乙個節點
它的左子樹中的所有數值都比當前節點的關鍵碼小
它的右子樹中的所有節點的關鍵碼都比當前節點的關鍵碼大
二叉搜尋樹的結構在一定程度上能夠提高搜尋效率
平衡二叉樹是指:
對於二叉樹中的任意乙個節點,
節點的左子樹的高度與右子樹的高度之差不會超過1
二叉樹的層數:
根節點的層數為1,從根節點到葉子結點層數依次增加
二叉樹的高度:
葉子節點的高度為1,從葉子節點到根節點高度依次增加,根節點的高度最大
二叉樹的深度:
葉子節點的深度指的是從根節點到當前葉子節點所經過的路徑長度
二叉樹的遍歷:
熟練實現二叉樹的中序遍歷,先序遍歷和後序遍歷
尤其是二叉樹的中序遍歷:先中序遍歷左子樹,再訪問根節點,最後中序遍歷右子樹
二叉樹遍歷的遞迴實現和迭代實現(尾遞迴很容易改寫成迭代形式)
圖的遍歷
圖的深度優先搜尋(dfs)和廣度優先搜尋(bfs)
二叉樹的前序遍歷、中序遍歷和後序遍歷的過程就是一種深度優先搜尋
實現乙個函式,檢查二叉樹是否平衡,
平衡的定義如下,對於樹中的任意乙個結點,其兩顆子樹的高度差不超過1。
給定指向樹根結點的指標treenode* root,請返回乙個bool,代表這棵樹是否平衡。
演算法1:
實現輔助函式 getheight 以獲取層序遍歷意義下每個節點的高度
對於二叉樹中的任何乙個節點,判斷其左子樹和右子樹的高度之差
是否大於1,如果大於1,則立即返回說明該二叉樹不是平衡二叉樹
但是訪問二叉樹中的每個節點時,都要遞迴得到節點的高度,時間開銷大
演算法2:
構造checkheight輔助函式,如果輸入的節點的左右子樹的高度之差大於1,
則直接返回-1表明該二叉樹不是平衡二叉樹,否則返回當前節點的高度,
以供之後計算它的父代節點的高度做準備
**/#include#include#includeusing namespace std;
struct treenode
};class balance
if(root->left==null and root->right==null)
else if(root->left==null)
else if(root->right==null)
else
}bool isbalance(treenode* root)
if(root->left==null and root->right==null)
vectorhelper_queue;// 構造輔助佇列以實現對二叉樹的層序遍歷
helper_queue.push_back(root);
treenode *temp;
int left_depth=0;
int right_depth=0;
while(helper_queue.size()>0)
else
if(temp->right!=null)}}
return true;
}};int main()
// 演算法2
#include#include#includeusing namespace std;
struct treenode
};class balance
if(root->left==null and root->right==null)
else
int right_height=this->checkheight(root->right);
if(right_height==-1)
if(left_height-right_height>1 or left_height-right_height<-1)
else}}
bool isbalance(treenode* root)
else
}};
二叉樹平衡檢查
題目描述 實現乙個函式,檢查二叉樹是否平衡,平衡的定義如下,對於樹中的任意乙個結點,其兩顆子樹的高度差不超過1。給定指向樹根結點的指標treenode root,請返回乙個bool,代表這棵樹是否平衡。思路一 用遞迴來遍歷計算每個節點左右子樹的高度,最後比較差值。時間複雜度o n logn publ...
二叉樹平衡檢查
實現乙個函式,檢查二叉樹是否平衡,平衡的定義如下,對於樹中任意乙個結點,兩顆子樹的高度差不超過1。給定指向樹根結點的指標treenode root,請返回乙個bool,代表這棵樹是否平衡。樹結構自身就是遞迴定義,很多問題都可以利用遞迴巧妙地實現,對於這道題,關鍵點有兩處 求結點左右子樹高度差 遍歷樹...
二叉樹平衡檢查
題目描述 實現乙個函式,檢查二叉樹是否平衡,平衡的定義如下,對於樹中的任意乙個結點,其兩顆子樹的高度差不超過1。給定指向樹根結點的指標treenode root,請返回乙個bool,代表這棵樹是否平衡。coding utf 8 class treenode def init self,x self....