【leetcode】144.binary tree preorder

题目翻译
Given a binary tree, return the preorder traversal of its nodes’ values.
给定一个二叉树,求它的前序遍历序列。

思路一
递归。
代码

class Solution:
    def preorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        res = []
        self.helper(root,res) #调用递归函数
        return res
        
    def helper(self,root,res):
        if not root:
            return
        res.append(root.val)
        self.helper(root.left,res)
        self.helper(root.right,res)

思路二
开辟一个堆栈,用栈来模拟递归的过程。

class Solution:
    def preorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        stack = []
        result = []
        while root or stack: 
            if not root:
                root = stack.pop() #root不存在的,从stack中弹出一个数
            result.append(root.val)
            if root.right: #root.right存在时,将root.right存入堆栈
                stack.append(root.right)
            root = root.left #先遍历root.left
        return result

猜你喜欢

转载自blog.csdn.net/qq_42011358/article/details/83416436