二叉樹常用介面

2021-09-26 19:36:51 字數 1488 閱讀 2977

二叉樹問題用遞迴來解決時 是從葉子結點 往根的方向 從下往上來實現的

關係:總結點個數 = 根 + 左子樹結點個數 + 右子樹結點 個數

終止條件: 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...