程序员

第六章_二叉树_2019-03-24

2019-03-24  本文已影响0人  雨住多一横

介绍

相关概念

二叉树的性质

经典题

# -*- coding:utf-8 -*-

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class TreeToSequence:
    def fore_seq(self, root, result):
        if root != None:
            result[0].extend([root.val])
            self.fore_seq(root.left, result)
            self.fore_seq(root.right, result)
    def inter_seq(self, root, result):
        if root != None:
            self.inter_seq(root.left, result)
            result[1].extend([root.val])
            self.inter_seq(root.right, result)
    def back_seq(self, root, result):
        if root != None:
            self.back_seq(root.left, result)
            self.back_seq(root.right, result)
            result[2].extend([root.val])
    def convert(self, root):
        # write code here
        result = [[], [], []]
        self.fore_seq(root, result)
        self.inter_seq(root, result)
        self.back_seq(root, result)
        #以二维数组的形式返回先序、中序和后序遍历序列
        return result

不管是递归方法还是非递归方法,遍历整棵树的时间复杂度都是O(N),N为二叉树的节点数,额外空间复杂度为O(L),L为二叉树的层数。

编程中返回两个信息可以通过返回长度为2的数组实现
在递归中维护当前层的处理结果并返回给上一层可以通过更新全局变量实现

编程中返回四个信息可以通过返回长度为4的数组实现
在递归中维护当前层的处理结果并返回给上一层可以通过更新全局变量实现

上一篇 下一篇

猜你喜欢

热点阅读