判断二叉树是否是平衡二叉树

来源:互联网 发布:网络传销诈骗标语 编辑:程序博客网 时间:2024/05/20 04:28
根据平衡二叉树的定义,每个节点的左右子树的高度差小于等于1,只需计算出二叉树左右子树高度,时同时判断左右子树的高度差即可
递归求解:(仅仅是对求树的高度进行改进)
(1)左子树高度,左子树是否是平衡树
(2)右子树高度,右子树是否是平衡树
(3)左子树与右子树高度之差是否<=1

(4)返回树的高度


typedef struct Node{char data;Node *lChild, *rChild, *parent;}Node, *Tree;

int treeHight(Tree root, bool &isBalance){if(root == NULL)return 0;int lHight = treeHight(root->lChild, isBalance);if(!isBalance)return 0;int rHight = treeHight(root->rChild, isBalance);if(!isBalance)return 0;int dif = lHight - rHight;if(abs(dif) > 1){isBalance = false;return 0;}return max(lHight, rHight) + 1;}


0 0
原创粉丝点击