二叉樹問題用遞迴來解決時 是從葉子結點 往根的方向 從下往上來實現的
關係:總結點個數 = 根 + 左子樹結點個數 + 右子樹結點 個數
終止條件: root == null;
int
size
(node*root)
關係:總葉子結點 = 左子樹葉子結點個數 + 右子樹葉子結點個數
終止條件: root == null 和 root->left == null && root->right == null;
int
leafsize
(node*root)
關係:二叉樹的深度 = 1(根) + 左子樹的深度+右子樹的深度
終止條件: root == null 和 root->left == null && root->right == null;
int
gethight
(node*root)
關係:二叉樹第k層結點的個數 = 左子樹第k— 1 層結點個數 + 右子樹第k— 1 層結點個數
終止條件:root == null 和 root != null&&k== 1
int
getklevelnode
(node*root,
int k)
//第k層結點的個數
關係:前序遍歷
終止條件 :root == null和root->value == v
node*
find
(node*root,
int v)
關係 :根相同 左子樹相同 右子樹相同
終止條件:root == root2 &&root == null;root->value == root2->value
關鍵在於理解!!!!!!!!!!!!
用&&連線的邏輯關係 當&&前面為假時 不會再對&&後面的內同進行判斷
bool issametree
(node*root, node*root2)
同判讀兩棵樹是否相同類似,根相同 左子樹== 右子樹 右子樹== 左子樹
bool ismirror
(node*root, node*root2)
//兩棵樹 映象
類似於在 樹 中 查詢元素 v 用 root->value == v 來判斷
本題相當於在 樹 中 找另一棵樹 用issamtree函式來判斷
平衡二叉樹 :所有的左右子樹都滿足 左右子樹的深度差小於1
bool balancetree
(node*root)
二叉樹介面定義
package com.swust.二叉樹 滿二叉樹 所有節點 非葉子節點 左右子樹均非空 完全二叉樹 非滿的節點,必然在整棵樹的右下角 二分搜尋樹的每個節點的值 大於其左子樹的所有節點的值 小於其右子樹的所有節點的值 public inte ce bstinte ce private node r...
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...
樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹
目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...