LintCode 66题:Binary Tree Preorder Traversal

这篇文章讲解的是LintCode第66题:二叉树先序遍历—Binary Tree Preorder Traversal

题目描述链接

Example
Example 1:

Input:{1,2,3}
Output:[1,2,3]
Explanation:
   1
  / \
 2   3
it will be serialized {1,2,3}
Preorder traversal
Example 2:

Input:{1,#,2,3}
Output:[1,2,3]
Explanation:
1
 \
  2
 /
3
it will be serialized {1,#,2,3}
Preorder traversal

使用三种方式:第一种是Traverse,第二种是分治,第三种是使用栈:

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right = None, None
"""
# Traverse
def preorderTraversal(self, root):
    # write your code here

    results = []
    self.preorder(results, root)
    return results

def preorder(self, results, root):
    if not root:
        return

    results.append(root.val)
    self.preorder(results, root.left)
    self.preorder(results, root.right)
# Divide & Conquer
def preorderTraversal(self, root):
    # write your code here
    # Divide & Conquer
    if not root:
        return []

    results = []
    left = self.preorderTraversal(root.left)
    right = self.preorderTraversal(root.right)

    results.append(root.val)
    results.extend(left)
    results.extend(right)

    return results
# Stack
def preorderTraversal(self, root):
   if not root:
       return []
   stack = []
   results = []
   stack.append(root)
   while stack:
       node = stack.pop()
       results.append(node.val)
       if node.right:
           stack.append(node.right)
       if node.left:
           stack.append(node.left)
   return results
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值