劍指offer 平衡二叉樹

2022-08-10 08:42:15 字數 901 閱讀 3925

平衡二叉樹

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

平衡二叉樹的概念:為空樹,或者左右兩邊的高度差不超過1

自己想的笨方法:從根部開始,採用前序遍曆法,依次求左右子樹的深度,然後求它們的差,遇到不符合要求的結點的返回false,否則遞迴的進行後續子結點的高度的求解

isbalanced_solution(root.left) && isbalanced_solution(root.right);

public class solution 

return true;

}public int deep(treenode root)

}

注:上面的方法有個缺點:就是從上往下依次求解的話,會對於每個節點的深度都求解多次,增加不必要的開銷。

別人的思路:從下往上的遞迴求解結點的高度差,若有不符合要求的,則返回false,否則遞迴向上求解子結點的高度。 

而從下往上遞迴時,是使用後序遍曆法來進行求解的

每次都判斷左右子樹的高度差,若不符合left-right>1的話,則返回-1;

public class solution 

public int deep(treenode root)

int left = deep(root.left);

if(left == -1) return -1;

int right = deep(root.right);

if(right == -1) return -1;

return math.abs(left - right) > 1 ? -1 : math.max(left, right) + 1;

}}

劍指offer 平衡二叉樹

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹 1 重複遍歷結點 參考上一題求二叉樹的深度,先求出根結點的左右子樹的深度,然後判斷它們的深度相差不超過1,如果否,則不是一棵二叉樹 如果是,再用同樣的方法分別判斷左子樹和右子樹是否為平衡二叉樹,如果都是,則這就是一棵平衡二叉樹。但上面的方法在判斷子樹是否...

劍指offer 平衡二叉樹

本文首發於我的個人部落格 尾尾部落 題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。解題思路 定義 平衡二叉查詢樹,簡稱平衡二叉樹。可以是空樹。假如不是空樹,任何乙個結點的左子樹與右子樹都是平衡二叉樹,並且高度之差的絕對值不超過1。遍歷每個結點,借助乙個獲取樹深度的遞迴函式,根據該結點的左右...

劍指Offer 平衡二叉樹

輸入一棵二叉樹的根結點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。注意 規定空樹也是一棵平衡二叉樹。definition for a binary tree node.class treenode object def init self...