前序遍历(递归)
class Solution:
def preorder(self,root):
if not root:
return []
return [root.val] + [self.preorder(root.left)] + [self.preorder(root.right)]中序遍历(递归)
class Solution:
def middleorder(self,root):
if not root:
return []
return [self.middleorder(root.left)] + [root.val] + [self.middleorder(root.right)]后序遍历(递归)
class Solution:
def postorder(self,root):
if not root:
return []
return [self.postorder(root.left)] + [self.postorder(root.right)]+[root.val]前序遍历(非递归)
class Solution:
def preorder(self,root):
if root is None:
return []
stack = [root]
res = []
while stack:
node = stack.pop()
if node is not None:
res.append(node.val)
if node.right is not None:
stack.append(node.right)
if node.left id not None:
stack.append(node.left)
return res中序遍历(非递归)
class Solution:
def middleorder(self,root):
res = []
stack = []
while stack or root:
while root:
stack.append(root)
root = root.left
root= stack.pop()
res.append(root.val)
root = root.right
return res层序遍历(非递归)
class Solution:
def levelorder(self,root):
if root is None:
return []
res = []
queue= [root]
while queue:
level = []
for _ in range(len(queue)):
node = queue.pop(0)
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(level)
return res

京公网安备 11010502036488号