LeetCode94-二叉树的中序遍历

原题链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/

方法一:递归,需了解树的递归序遍历

复制代码
 1 # Definition for a binary tree node.
 2 # class TreeNode:
 3 #     def __init__(self, val=0, left=None, right=None):
 4 #         self.val = val
 5 #         self.left = left
 6 #         self.right = right
 7 class Solution:
 8     def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
 9         def inorder(root: TreeNode):
10             if not root:
11                 return
12             inorder(root.left)
13             res.append(root.val)
14             inorder(root.right)
15         res = list()
16         inorder(root)
17         return res
复制代码

 

方法二:采用栈辅助

复制代码
 1 # Definition for a binary tree node.
 2 # class TreeNode:
 3 #     def __init__(self, val=0, left=None, right=None):
 4 #         self.val = val
 5 #         self.left = left
 6 #         self.right = right
 7 from collections import deque
 8 class Solution:
 9     def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
10         # 每棵子树的整棵树左边界进栈,依次弹出的过程打印记录,对弹出节点的右树重复以上操作
11         res = list()
12         if root:
13             stack = deque()
14             while stack or root:
15                 if root:
16                     # 左边界进栈
17                     stack.append(root)
18                     root = root.left
19                 else:
20                     root = stack.pop()
21                     res.append(root.val)
22                     root = root.right
23         return res
复制代码

 

posted @   CaptainDragonfly  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示