【每日OJ —— 110. 平衡二叉树】

每日OJ —— 110. 平衡二叉树

  • 1.题目:110. 平衡二叉树
  • 2.解法
    • 2.1.算法讲解
    • 2.2.代码实现
    • 2.3.提交通过展示

1.题目:110. 平衡二叉树

【每日OJ —— 110. 平衡二叉树】_第1张图片

2.解法

2.1.算法讲解

1.这道题中的平衡二叉树的定义是:二叉树的每个节点的左右子树的高度差的绝对值不超过 111,则二叉树是平衡二叉树。根据定义,一棵二叉树是平衡二叉树,当且仅当其所有子树也都是平衡二叉树,因此可以使用递归的方式判断二叉树是不是平衡二叉树,递归的顺序可以是自顶向下或者自底向上。
2.算法:自顶向下递归
定义函数 height用于计算二叉树中的任意一个节点 p 的高度:

在这里插入图片描述
有了计算节点高度的函数,即可判断二叉树是否平衡。具体做法类似于二叉树的前序遍历,即对于当前遍历到的节点,首先计算左右子树的高度,如果左右子树的高度差是否不超过 1,再分别递归地遍历左右子节点,并判断左子树和右子树是否平衡。这是一个自顶向下的递归的过程。

2.2.代码实现

【每日OJ —— 110. 平衡二叉树】_第2张图片

2.3.提交通过展示

【每日OJ —— 110. 平衡二叉树】_第3张图片

你可能感兴趣的:(C语言,#,数据结构,#,#,二叉树,数据结构,算法,深度优先遍历,二叉树,c语言)