leetcode Balanced Binary Tree 后序遍历思想避免重复遍历结点

来源:互联网 发布:linux 解压rar文件命令 编辑:程序博客网 时间:2024/05/20 22:30

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

用一个变量保存当前结点的深度

/** * 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 = 0;        return isBalance(root,&depth);    }    bool isBalance(TreeNode* root, int* depth) {        if(root == NULL) {            *depth = 0;            return true;        }        int left,right;        if(isBalance(root->left,&left) && isBalance(root->right,&right)) {            int dif = left-right;            if(dif<=1 && dif>=-1) {                *depth = left>right?left+1:right+1;                return true;            }        }        return false;    }};


0 0
原创粉丝点击