是否為平衡二叉樹(自頂向下 自底向上)

2021-10-06 05:29:12 字數 666 閱讀 3627

法1:暴力法(自頂向下)

這種方法最容易想到,但是每乙個結點都會被遍歷多次,時間複雜度太高!

class

solution

// 求解二叉樹深度

intdepth

(treenode* node)

};

法2:自底向上(這是這道題的經典所在!)

思路是用後序遍歷二叉樹的每乙個結點,在遍歷到乙個結點時我們已經遍歷了它的左右子樹。然後就可以一邊判斷當前結點是否平衡一邊求出當前結點的高度。(我覺得這種方法特別好!!)

class

solution

bool

dfs(treenode*root,

int&depth)

int left_depth,right_depth;if(

dfs(root-

>left,left_depth)

&&dfs

(root-

>right,right_depth))}

return

false;}

};

判斷二叉樹是否為平衡二叉樹

一 線性思維 遍歷每個節點都時候,求左右子樹的深度,如果左右子樹深度相差不超過1,繼續遞迴遍歷左右節點,此種方法會重複遍歷,時間效率不高 is balanced t if t is null return true left treedepth t.left right treedepth t.ri...

判斷二叉樹是否為平衡二叉樹

題目 平衡二叉樹的性質為 要麼是一棵空樹,要麼任何乙個節點的左右子樹高度差的絕對值不超過1。給定一棵二叉樹的頭結點head,判斷這棵二叉樹是否為平衡二叉樹。要求 如果二叉樹的節點數為n,要求時間複雜度為o n 判斷二叉樹是否為二叉樹 public boolean isbalance node hea...

判斷二叉樹是否為平衡二叉樹

要判斷二叉樹是否為平衡二叉樹 平衡二叉樹的定義 在乙個二叉樹中 每個節點子樹的左右高度差不超過1 1 首先判斷它的根節點是否為空 若是的話,就是平衡二叉樹 2 分別求出左右子樹的高度 若高度的絕對值不超過一則為平衡二叉樹 計算二叉樹高度 public static int calchigh node...