树
1. 给定一个二叉树,确定它是高度平衡的。
一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。
依然采用分治法的思想,若一棵树的左右子树都是平衡二叉树,那么这棵树一定是平衡二叉树。
以及只要求出左右子树的深度就可以判断出这棵树是不是平衡二叉树了。
class TreeNode: def __init__(self,value): self.value=value self.left=None self.right=None def getHeight(root): if root is None: return 0 return 1+max(getHeight(root.left),getHeight(root.right)) def isbalance(root): if root is None: return True if abs(getHeight(root.left)-getHeight(root.right))>1: return False return isbalance(root.left) and isbalance(root.right) # node1=TreeNode(3) # node2=TreeNode(9) # node3=TreeNode(20) # node4=TreeNode(15) # node5=TreeNode(7) # node1.left=node2 # node1.right=node3 # node3.left=node4 # node3.right=node5 node1=TreeNode(3) node2=TreeNode(20) node3=TreeNode(15) node4=TreeNode(7) node1.right=node2 node2.left=node3 node2.right=node4 print(isbalance(node1))
2.N叉树的前序遍历
前序遍历:对于当前节点,先输出该节点,然后输出他的左孩子,最后输出他的右孩子。以上图为例,递归的过程如下:
class TreeNode: def __init__(self,value): self.value=value self.children=None def find(root): if root is None: return [] list.append(root.value) if root.children: for node in root.children: print(root.value,node.value) find(node) node1=TreeNode(1) node2=TreeNode(2) node3=TreeNode(3) node4=TreeNode(4) node5=TreeNode(5) node6=TreeNode(6) node1.children=[node3,node2,node4] node3.children=[node5,node6] list=[] find(node1) print(list)
posted on 2020-10-11 12:45 happygril3 阅读(67) 评论(0) 收藏 举报
浙公网安备 33010602011771号