zoukankan      html  css  js  c++  java
  • 144. Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values.

    For example:
    Given binary tree {1,#,2,3},

       1
        
         2
        /
       3
    

    return [1,2,3].

     该题是对树做前序遍历

    下面分别是递归,非递归,分治三种思路的解题结果

    #递归写法
    class Solution(object):
        
        def preorderTraversal(self, root):
            """
            :type root: TreeNode
            :rtype: List[int]
            """
            if root is None:
                return []
            result = []
            self.traverse(root,result)
            return result
        def traverse(self,root,result):
            if root is None:
                return
            result.append(root.val)
            self.traverse(root.left,result)
            self.traverse(root.right,result)   
    #分治法
    class Solution(object):
        
        def preorderTraversal(self, root):
            """
            :type root: TreeNode
            :rtype: List[int]
            """
            if root is None:
                return []
            result = []
            #分
            left = self.preorderTraversal(root.left)
            right = self.preorderTraversal(root.right)
            #治
            result.append(root.val)
            result.extend(left)
            result.extend(right)
            return result
    #非递归写法,用栈模拟
    class Solution(object):
        def preorderTraversal(self, root):
            """
            :type root: TreeNode
            :rtype: List[int]
            """
            if root is None:
                return []
            stack = [root]
            preorder = []
            while stack:
                node = stack.pop()
                preorder.append(node.val)
                if(node.right):
                    stack.append(node.right)
                if(node.left):
                    stack.append(node.left)
            return preorder   
  • 相关阅读:
    js正则表达式大全(2)
    Magic Trackpad 2 on win10 x64
    Google 日历短信通知没有了
    Ueditor 1.4.3 jsp utf-8版Bug修复
    [转]eclipse中build workspace的相关优化
    Hello,
    EpCloud开发日志
    为服务创建安装程序
    winform 通过WCF上传Dataset数据
    opcrcw.da.dll 和.net 4.0
  • 原文地址:https://www.cnblogs.com/bubbleStar/p/6357630.html
Copyright © 2011-2022 走看看