''' 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 ''' # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def dfs(self, pRoot): ''' :param pRoot: :return: 如果当前节点的左右子树的高度差值大于1,则直接返回-1,说明不是平衡二叉树, 否则就返回当前节点左子树和右子树中最高的高度+1(当前的根节点) 通过对当前的二叉树后序遍历实现 ''' left=0 right=0 if pRoot.left is not None: left=self.dfs(pRoot.left) if pRoot.right is not None: right=self.dfs(pRoot.right) if left==-1: return -1 if right==-1: return -1 if abs(left-right)>1: return -1 else: return max(left,right)+1 def IsBalanced_Solution(self, pRoot): # write code here if not pRoot: return True if self.dfs(pRoot)==-1: return False else: return True ''' 递归算法的调用过程: 1 / \ 2 3 / \ / \ 4 5 /\ / 6 def dfs(self, pRoot) 1 / \ 2 3 / \ / \ 4 5 /\ / 6 left=self.dfs(pRoot.left) 2 / \ 4 5 /\ / 6 left=self.dfs(pRoot.left) 4 /\ :return 1 right=self.dfs(pRoot.right) 5 / 6 :return 2 :return 3 right=self.dfs(pRoot.right) 3 / \ :return1 :return-1 '''
python 平衡二叉树
猜你喜欢
转载自blog.csdn.net/WYXHAHAHA123/article/details/89892968
今日推荐
周排行