美文网首页
LeetCode-python 144.二叉树的前序遍历

LeetCode-python 144.二叉树的前序遍历

作者: wzNote | 来源:发表于2019-09-20 14:32 被阅读0次

    题目链接
    难度:困难       类型: 二叉树


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

    示例

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

    解题思路


    1. 初始化一个栈,里面存储着根节点
    2. 取出栈顶节点,将改节点的值存储在遍历的结果中,将其右孩子和左孩子依次入栈
    3. 重复第2步,直到栈为空

    因为栈是先进后出,所以右孩子先进栈,左孩子后进栈,出栈的时候就会先出左孩子,保证了遍历的顺序

    代码实现

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def preorderTraversal(self, root):
            """
            :type root: TreeNode
            :rtype: List[int]
            """
            if not root:
                return []
            stack = [root]
            output = []
            while stack:
                node = stack.pop()
                if not node:
                    continue
                output.append(node.val)
                stack.append(node.right)
                stack.append(node.left)
            return output
            
    

    本文链接:https://www.jianshu.com/p/04fdaa7f15fe

    相关文章

      网友评论

          本文标题:LeetCode-python 144.二叉树的前序遍历

          本文链接:https://www.haomeiwen.com/subject/syfwectx.html