题目:
给定一个二叉搜索树,求它的中序遍历结果
思路:
使用递归,给定一颗树,先遍历左子树,再读根,再遍历右子树。遍历左子树的方式可以再调用这个函数本身,经过多次递归调用,可以完成对给定树的中序遍历
代码:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def inorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
ans = []
if not root:
return ans
else:
self.dfs(root,ans)
return ans
def dfs(self,root,ans):
if not root:
return
self.dfs(root.left,ans)
ans.append(root.val)
self.dfs(root.right,ans)
注意:python的类内函数参数self的作用:self指的是这个类对象本身,类似于c++的this,self参数python会自动给定,所以传递参数时不必要传self的值(也可以传对象名)。而函数定义时最好有self参数,方便递归调用,也方便读者阅读。