二叉树的镜像
class Solution:
def Mirror(self , pRoot: TreeNode) -> TreeNode:
if not pRoot:
return None
pRoot.right, pRoot.left = self.Mirror(pRoot.left),self.Mirror(pRoot.right)
return pRoot
从上往下打印二叉树
class Solution:
def PrintFromTopToBottom(self , root: TreeNode) -> List[int]:
result = []
if not root:
return result
stack = [root]
while stack:
temp = stack[0]
result.append(temp.val)
stack = stack[1:]
if temp.left:
stack.append(temp.left)
if temp.right:
stack.append(temp.right)
return result
if not root:
return []
result = []
result.extend([root.val])
result.extend(self.PrintFromTopToBottom(root.left))
result.extend(self.PrintFromTopToBottom(root.right))
return result
二叉树中和为某一值的路径(一)
class Solution:
def hasPathSum(self , root: TreeNode, sum: int) -> bool:
if not root:
return False
sum = sum - root.val
if not root.left and not root.right:
return True if sum == 0 else False
left_ = self.hasPathSum(root.left, sum)
right_ = self.hasPathSum(root.right, sum)
return (left_ or right_)
判断是不是平衡二叉树
class Solution:
result = True
def IsBalanced_Solution(self , pRoot: TreeNode) -> bool:
self.high(pRoot)
return self.result
def high(self,tree):
if not tree:
return 0
l = self.high(tree.left)
r = self.high(tree.right)
if abs(l-r) > 1:
self.result = False
return -1
return 1 + max(l,r)