二叉树中序遍历:递归与栈实现详解
中序遍历二叉树指的是按照左子树、根节点、右子树的顺序遍历二叉树。具体实现可以使用递归或者栈来实现。
递归实现
-
如果二叉树为空,则返回。
-
遍历二叉树的左子树。
-
访问当前节点。
-
遍历二叉树的右子树。
代码实现:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def inorderTraversal(root: TreeNode) -> List[int]:
res = []
def helper(node):
if not node:
return
helper(node.left)
res.append(node.val)
helper(node.right)
helper(root)
return res
栈实现
-
初始化一个栈和一个指针,指向根节点。
-
如果当前节点不为空或者栈不为空,则执行以下操作:
-
将当前节点的所有左子节点入栈,并将指针指向当前节点的左子节点。
-
弹出栈顶元素,访问该节点,并将指针指向当前节点的右子节点。
-
代码实现:
def inorderTraversal(root: TreeNode) -> List[int]:
res = []
stack = []
cur = root
while cur or stack:
while cur:
stack.append(cur)
cur = cur.left
cur = stack.pop()
res.append(cur.val)
cur = cur.right
return res
原文地址: http://www.cveoy.top/t/topic/oCmB 著作权归作者所有。请勿转载和采集!