本文共 931 字,大约阅读时间需要 3 分钟。
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ //深度优先遍历求树高,再根据平衡二叉树的定义判断是否平衡 class Solution { public: bool isBalanced(TreeNode* root) { //左右子树均是平衡二叉树 if(root==nullptr) return true; if(abs(depth(root->left)-depth(root->right))>1){ return false; } return isBalanced(root->left) && isBalanced(root->right); } int depth(TreeNode* root) { if(root==nullptr){ return 0; } return max(depth(root->left),depth(root->right))+1; }};
转载地址:http://rbfdi.baihongyu.com/