Leetcode 94. Binary Tree Inorder Traversalt (二叉樹中序遍歷)
阿新 • • 發佈:2018-12-03
原題
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