1. 程式人生 > >Leetcode 94. Binary Tree Inorder Traversalt (二叉樹中序遍歷)

Leetcode 94. Binary Tree Inorder Traversalt (二叉樹中序遍歷)

原題

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]

Reference Answer

思路分析

直接按照正常中序遍歷走就好了,遞迴做,省事。

My Code

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
# self.val = x # self.left = None # self.right = None class Solution: def inorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ res = [] self.helper(root, res) return res def
helper(self, root, res): """ :type root: TreeNode :rtype: List[int] """ if not root: return else: self.helper(root.left, res) res.append(root.val) self.helper(root.right, res)

Reference Code


中序遍歷的訪問順序為『先左再根後右』,遞迴版最好理解,遞迴呼叫時注意返回值和遞迴左右子樹的順序即可。

Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        this.val = val
        this.left, this.right = None, None
"""

class Solution:
    """
    @param root: The root of binary tree.
    @return: Inorder in ArrayList which contains node values.
    """
    def inorderTraversal(self, root):
        if root is None:
            return []
        else:
            return self.inorderTraversal(root.left) + [root.val] \
                              + self.inorderTraversal(root.right)
  

Note:

  • 直接用遞迴做吧,省事,參考答案的最省事,不過有一點要注意就是 [] 使用,以及 + 的使用,這個是直接返回一個list,如果是範圍[[], [], []...],就不能再直接這樣使用。

參考資料

[1] https://www.kancloud.cn/kancloud/data-structure-and-algorithm-notes/73026