劍指offer 39 判斷二叉樹是否為平衡二叉樹

2021-07-30 11:46:57 字數 435 閱讀 6507

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

思路:如果直接使用遞迴遍歷,會重複遍歷之前的節點,更好的方法是採用後序遍歷,對每個節點來說,我們都已經遍歷了它的左右子樹,所以邊遍歷邊判斷,最後遍歷到樹的根節點時,判斷完畢。

遞迴遍歷:

class solution 

};

後序遍歷:

class solution 

int left,right;

if(isbalanced(proot->left,&left)&&isbalanced(proot->right,&right))

}return false;

}bool isbalanced_solution(treenode* proot)

};

劍指offer 39 平衡二叉樹

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。首先,什麼是平衡二叉樹?如果二叉樹中任意結點的左右子樹深度相差不超過1,那麼它就是平衡二叉樹。最直接的做法,遍歷每個結點,借助乙個獲取樹深度的遞迴函式,根據該結點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進行判斷。public class sol...

劍指offer39 平衡二叉樹

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。首先要搞清楚什麼是平衡二叉樹 它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。很直觀用遞迴來解決 coding utf 8 class treenode def init self,x self.va...

劍指offer 39 平衡二叉樹

1.題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。2.解題思路 預備知識 平衡二叉樹是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。思想 從根節點開始,先判斷左右子樹的高度差是否超過1,然後接著判斷左右子樹是否是平衡二叉樹。這邊用到了遞迴思想。如...