Leetcode题库 110.平衡二叉树(递归 C实现)
生活随笔
收集整理的這篇文章主要介紹了
Leetcode题库 110.平衡二叉树(递归 C实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 思路
- 代碼
思路
Height函數:
p為平衡二叉樹時,正常返回p的高度;否則返回-1
若某結點返回值為-1,說明這個結點的左右子樹不平衡,此時該結點的父結點接收到的子樹高度為-1,則父結點的left值=0,繼續返回-1
說明只要有一個點不平衡,那么這個信息(不平衡)將會向上傳遞,表現在數值上就是最后返回root高度為-1
若每個點都是平衡的,則正常返回root的高度,因為每個點都是平衡的,Height函數的出口只會在第一個return,不會執行到”return -1;”,此時就意味著該函數是一個返回root高度的函數
代碼
int Height(struct TreeNode *p){if(p==NULL) return 0;int left=1+Height(p->left), right=1+Height(p->right);if(left>0 && right>0 && pow((left-right),2)<=1)return left>right? left:right;return -1;}bool isBalanced(struct TreeNode* root){int l=Height(root);return l>=0; }總結
以上是生活随笔為你收集整理的Leetcode题库 110.平衡二叉树(递归 C实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习 KNN算法_0_丐版_鸢尾花集
- 下一篇: scikit-learning_特征分析