↓ 跳过正文
  1. Posts/

leetcode 110. Balanced Binary Tree

·238 字·1 分钟

题目链接

题意:判断一颗二叉树是否平衡….

思路:直接搞就好了。。。神TM又忘记dfs的时候忘记返回子调用的值。。。。我这是药丸啊。。。

 1 /**
 2 * Definition for a binary tree node.
 3 * struct TreeNode {
 4 *     int val;
 5 *     TreeNode *left;
 6 *     TreeNode *right;
 7 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8 * };
 9 */
10class Solution {  //错误原因:左右子树都平衡的树未必平衡!!!!
11public:
12		bool leaf(TreeNode* root)
13		{
14			if (root->left==NULL&&root->right==NULL) return true;
15			return false;
16		}
17		int dep(TreeNode* root)
18		{
19			if (root==NULL) return 0;
20			return max(dep(root->left),dep(root->right))+1;
21		}
22		bool dfs(TreeNode* root)
23		{
24				bool res = true;
25				if (abs(dep(root->left)-dep(root->right))>1) return false;
26				if (root->left!=NULL) res = dfs(root->left);
27				if (!res) return false;
28				if  (root->right!=NULL) res = dfs(root->right);
29				if (!res) return false;
30				return true;
31		}
32    bool isBalanced(TreeNode* root) {
33		if (root==NULL) return true;
34		bool res = dfs(root);
35		return res;
36    }
37};

相关文章

leetcode 104. Maximum Depth of Binary Tree(求一棵树的深度)

·158 字·1 分钟
题目链接 题意:求一棵树的深度。。。。 思路:。。。定义搞即可。。按照左右子树中大的算。。。因为据说是经典题(虽然并不觉得2333。。。所以记录下。。。 1/** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10class Solution { 11public: 12 13 int dfs(TreeNode* root) 14 { 15 if (root==NULL) return 0; 16 return max(dfs(root->left),dfs(root->right))+1; 17 } 18 19 int maxDepth(TreeNode* root){ 20 if (root==NULL) return 0; 21 int res = dfs(root); 22 return res; 23 24 25 } 26};

leetcode 226. Invert Binary Tree(反转二叉树)

·208 字·1 分钟
题目链接 题意:反转一棵二叉树。。。字面意思理解即可。。就是把每一棵子树的左右孩子交换。。。 思路:直接照着题意做就好了。。。没有坑。。记录的原因是听说这题比较经典(虽然毫无难度…

112. Path Sum

·257 字·1 分钟
题目链接 题意:给一棵树。。问是否存在一条从树根到叶子的路径,使得路径上每个点的val之和等于给定的sum。 思路:。。。直接搞就好。。。由于是比较经典的题目所以记录一下。。。注意递归的时候每一部分都要返回值orz..(我是多久没写代码了。。。