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   
  • 相关阅读:
    POJ 1003 解题报告
    POJ 1004 解题报告
    POJ-1002 解题报告
    vi--文本编辑常用快捷键之光标移动
    常用图表工具
    September 05th 2017 Week 36th Tuesday
    September 04th 2017 Week 36th Monday
    September 03rd 2017 Week 36th Sunday
    September 02nd 2017 Week 35th Saturday
    September 01st 2017 Week 35th Friday
  • 原文地址:https://www.cnblogs.com/bubbleStar/p/6357630.html
Copyright © 2011-2022 走看看