Balanced Binary Tree

来源:互联网 发布:电路图仿真软件 编辑:程序博客网 时间:2024/06/05 20:19

还是深搜。判断左面子树合法吗?右面子树合法吗?左右子树的深度差合法吗?如果不合法,直接返回不合法;否则,返回合法,并且将深度置为左右子树深度大的那个加一。

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool isBalanced(TreeNode *root) {        int depth;        return dfs(root, depth);    }    bool dfs(TreeNode *root, int &depth) {        if (root == NULL) {            depth = 0;            return true;        }        int l_depth, r_depth;        bool l_valid, r_valid;        l_valid = dfs(root->left, l_depth);        r_valid = dfs(root->right, r_depth);        if (!l_valid || !r_valid || max(l_depth, r_depth) - min(l_depth, r_depth) > 1)            return false;        depth = max(l_depth, r_depth) + 1;        return true;    }};

http://oj.leetcode.com/problems/balanced-binary-tree/

0 0
原创粉丝点击