从上往下打印出二叉树的每个节点,同层节点从左至右打印
思路:很明显–层次遍历==队列实现(第一反应)
def PrintFromTopToBottom(self, root):
l = []
if not root:
return []
q = [root] #跟节点为首层,进队先
while len(q):
t = q.pop(0) #队列的对头出队,并且把他的左右孩子入队(理解的重点)--当该层全出队时,下一层全入队了。
l.append(t.val)
if t.left:
q.append(t.left)
if t.right:
q.append(t.right)
return l
二叉树的镜像
def Mirror(self, root):
# write code here
if root:
root.left, root.right = root.right, root.left
self.Mirror(root.left)
self.Mirror(root.right)
return root
二叉树的前序遍历
def pre(self,l, root):
if not root:
return None
else:
l.append(root.val)
self.pre(root.left)
self.pre(root.right)
return l
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
def FindPath(self, root, expectNumber):
# write code here
if not root:
return []
if root and not root.left and not root.right and expectNumber==root.val:
return [[root.val]]
res = []
expectNumber = expectNumber - root.val
left = self.FindPath(root.left, expectNumber)
right = self.FindPath(root.right, expectNumber)
for i in left+right:
res.append([root.val]+i)
return res