假设通过“平衡”,你的意思是AVL树意义上的“高度平衡”,你可以为每个节点存储任意信息,
- 对于后续订单中的每个节点,
- 如果任何一个孩子不存在,则假设其各自的身高为0。
- 如果两个孩子的身高相差超过一,则树不平衡。
- 否则,此节点的高度是两个孩子的高度中的较大者。
- 如果达到此点,树就会平衡。
执行订单后遍历的一种方法:
- 从根
开始
- 环
- 如果此节点的左子节点存在且未计算其高度,请访问其下一个左子节点。
- 如果此节点的正确子节点存在且未计算其高度,则访问其下一个正确的子节点。
- 否则
- 计算此节点的高度,可能早点返回
- 如果此节点不是根节点,请访问其父节点。
- 如果达到此点,树就会平衡。