老卫带你学---leetcode刷题(94. 二叉树的中序遍历,递归+非递归)

leetcode刷题(94. 二叉树的中序遍历,递归+非递归)

问题:

二叉树的中序遍历
给定一个二叉树,返回它的中序 遍历。

示例:

输入: [1,null,2,3]
1
\
2
/
3

输出: [1,3,2]

请写出递归和非递归的两种代码

解决:

思想:

可以有递归和非递归两种方法

递归python代码:

class Solution:
    def inorderTraversal(self, root: TreeNode) -> List[int]:
        result=[]
        self.inorder(root,result)
        return result
    
    def inorder(self,root,result):
        p=root
        if p:
            self.inorder(p.left,result)
            result.append(p.val)
            self.inorder(p.right,result)

非递归python代码:

# 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: TreeNode) -> List[int]:
        result=[]
        if root==None:
            return result
        stack=[]
        p=root
        while(p or stack):
            if p:
                stack.append(p)
                p=p.left
            else:
                p=stack.pop()
                result.append(p.val)
                p=p.right
        return result

你可能感兴趣的:(leetcode刷题)