Balanced Binary Tree
2016-06-10 19:35
323 查看
c++
class Solution { public: bool isBalanced(TreeNode* root) { if (root == nullptr) return true; reachLeaf(root, 0); return flag; } private: bool flag = true; int reachLeaf(const TreeNode* root, int depth) { depth++; if (root->left == nullptr && root->right == nullptr) return depth; int left = depth, right = depth; if ((root->left != nullptr) && flag) left = reachLeaf(root->left, depth); if((root->right != nullptr) && flag) right = reachLeaf(root->right, depth); if (abs(right - left) > 1) flag = false; return max(right, left); } };
python
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def __init__(self): self.flag = True def isBalanced(self, root): """ :type root: TreeNode :rtype: bool """ if not root: return True self.reachLeaf(root, 0) return self.flag def reachLeaf(self, root, depth): depth += 1 if not root.left and not root.right: return depth left, right = depth, depth if root.left: left = self.reachLeaf(root.left, depth ) if root.right: right = self.reachLeaf(root.right, depth) if abs(right - left)>1: self.flag = False return max(left, right)
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- C语言实现选择排序、冒泡排序和快速排序的代码示例