Given a binary tree, return the inorder traversal of its nodes‘ values.
Example:
Input: [1,null,2,3] 1 2 / 3 Output: [1,3,2]
Follow up: Recursive solution is trivial, could you do it iteratively?
1 # Definition for a binary tree node. 2 # class TreeNode: 3 # def __init__(self, x): 4 # self.val = x 5 # self.left = None 6 # self.right = None 7 8 class Solution: 9 def helper(self, node: TreeNode, list_result: List[int]): 10 if node is None: 11 return 12 13 self.helper(node.left, list_result) 14 15 list_result.append(node.val) 16 17 self.helper(node.right, list_result) 18 19 # Recursive approach 20 def inorderTraversal1(self, root: TreeNode) -> List[int]: 21 if root is None: 22 return [] # should return [] rather than None 23 24 res = [] 25 self.helper(root, res) 26 27 return res 28 29 # Iterative approach 30 def inorderTraversal(self, root: TreeNode) -> List[int]: 31 if root is None: 32 return [] 33 34 cur = root 35 res, stack = [], [] 36 37 while cur or stack: 38 while cur: 39 stack.append(cur) 40 cur = cur.left 41 42 cur = stack.pop() 43 res.append(cur.val) 44 45 cur = cur.right 46 47 return res
Leetcode 94. Binary Tree Inorder Traversal
原文:https://www.cnblogs.com/pegasus923/p/11190606.html