分類:BackTracking
考察知識點(diǎn):BackTracking 二叉樹(Binary Tree)
最優(yōu)解時(shí)間復(fù)雜度:**BackTracking:O(???) ** BackTracking不好求 **Stack:O(n) **
94. Binary Tree Inorder Traversal
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(BackTracking):
# 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=[]
if root==None:
return res
self.Traversal(root,res)
return res
def Traversal(self,root,res):
if root == None:
return
self.Traversal(root.left,res)
res.append(root.val)
self.Traversal(root.right,res)
解法2(Stack):
# 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=[]
if root==None:
return res
stack=[]
pointer=root
while(pointer!=None or len(stack)!=0):
while pointer!=None:
stack.append(pointer)
pointer=pointer.left
pointer=stack.pop()
res.append(pointer.val)
pointer=pointer.right
return res
討論:
1.考一個(gè)二叉樹的遍歷,左中右的遍歷
2.這道題有兩種方法做這個(gè)題,一個(gè)是用Stack,一個(gè)是用回溯
- inorder traversal 記一下這個(gè)名詞是左中右遍歷

BackTracking

Stack