zoukankan      html  css  js  c++  java
  • 【LeetCode】Binary Tree Preorder Traversal

    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].

    Note: Recursive solution is trivial, could you do it iteratively?


    Solution:

    递归解法很简单:

     1 # Definition for a binary tree node.
     2 # class TreeNode:
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.left = None
     6 #         self.right = None
     7 
     8 class Solution:
     9     # @param {TreeNode} root
    10     # @return {integer[]}
    11     def preorderTraversal(self, root):
    12         if root == None:
    13             return []
    14         else:
    15             return [root.val] + self.preorderTraversal(root.left) + self.preorderTraversal(root.right)

    迭代版本也是常规的将递归改成迭代的版本:

    用一个栈来模拟递归的过程,注意栈 FILO 的特点。所以,对于当前根,要把右子树先加入栈,然后再把左子树加入栈。

    前序遍历的顺序是:根 - 左子树 - 右子树。

    代码如下:

     1 # Definition for a binary tree node.
     2 # class TreeNode:
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.left = None
     6 #         self.right = None
     7 
     8 class Solution:
     9     # @param {TreeNode} root
    10     # @return {integer[]}
    11     def preorderTraversal(self, root):
    12         stack = []
    13         path = []
    14         if root != None:
    15             stack.append(root)
    16         while stack != []:
    17             e = stack.pop()
    18             path.append(e.val)
    19             if e.right != None:
    20                 stack.append(e.right)
    21             if e.left != None:
    22                 stack.append(e.left)
    23         return path
  • 相关阅读:
    POJ-2393
    POJ-1328
    POJ-2376
    CF-811B
    CF-811A
    CF-816B
    P1111 修复公路
    P2777 [AHOI2016初中组]自行车比赛
    P1889 士兵站队
    P1459 三值的排序 Sorting a Three-Valued Sequence
  • 原文地址:https://www.cnblogs.com/maples7/p/4490937.html
Copyright © 2011-2022 走看看