classSolution:definorderTraversal(self, root: Optional[TreeNode])-> List[int]:
res =[]defdfs(root):if root isNone:return
dfs(root.left)
res.append(root.val)
dfs(root.right)
dfs(root)return res
迭代方式
需要借助一个指针,并且一上来不需要把self.root先放到stack里.
先找到树的左边的节点,依次压入占中,直到找到最左边的节点,cur循环结束
将最左边的节弹出后,然后加入res
若当前节点存在右节点,则令cur等于右节点
definorder_stack(self, root:TreeNode):
res,stack =[],[]if root isNone:return res
cur = root
while stack or cur:while cur:
stack.append(cur)
cur = cur.left
pop_node = stack.pop()
res.append(pop_node)
cur = pop_node.right
return res
classSolution:defisSymmetric(self, root: Optional[TreeNode])->bool:defisSym(left, right):if left and right:return left.val == right.val and isSym(left.left, right.right)and isSym(left.right, right.left)else:return left == right
return isSym(root, root)