已知一颗二叉链表表示二叉树T ,编写函数,判断T是不是为完全二叉树。先
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知一颗二叉链表表示二叉树T ,编写函数,判断T是不是为完全二叉树。先相关的知识,希望对你有一定的参考价值。
已知一颗二叉链表表示二叉树T ,编写函数,判断T是否为完全二叉树。先给出算法思想,再写出程序代码。
不要程序代码。要书面伪代码
判断一颗二叉树是否为二叉平衡树 python 代码
输入一颗二叉树,判断这棵树是否为二叉平衡树。首先来看一下二叉平衡树的概念:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。因此判断一颗二叉平衡树的关键在于求出左右子树的高度差,而二叉树的高度又是怎么定义的呢?二叉树的高度指的是从根节点到叶子节点所有路径上包含节点个数的最大值。所以我们可以得出,父亲节点的高度与左右子树高度的关系为:父亲节点的高度=max(左子树高度,右子树高度)+1,同时我们知道,叶子节点的高度值为1(或则0,这里定义1或者0对判断结果没有影响),根据这两条规则,我们就可以利用迭代来求出树的高度。从叶子节点开始不断回溯,依次求得左右节点的高度并判断左右节点的高度差,然后继续向上判断,具体过程参见代码。
首先定义二叉树的类
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
然后利用迭代进行判断
#判断平衡二叉树
def IsBalanced_Solution(self, pRoot):
# write code here
def balanced(root,height=0):
#叶子节点的高度定义为0
if not root:
height=0
return True,height
#由根节点向下迭代
balanceleft,left=balanced(root.left)
balanceright,right=balanced(root.right)
#如果左右子树都是平衡二叉树并且高度差不超过1,那么继续向上判断,父亲节点的高度值=max(左,右)+1
if balanceleft and balanceright:
if abs(left-right)<=1:
height=left+1 if left>right else right+1
return True,height
return False,height
balance,height=balanced(pRoot)
return balance
以上是关于已知一颗二叉链表表示二叉树T ,编写函数,判断T是不是为完全二叉树。先的主要内容,如果未能解决你的问题,请参考以下文章
用C语言编写程序,创建一个二叉树的二叉链表结构,然后输出从根结点到所有叶子结点的路径。
求数据结构 用键盘输入一个字符串,按照满二叉树的特点生成一颗二叉树。要求用递归方法生成二叉树