剑指Offer 4 :通过中序遍历和先序遍历来重构二叉树

题目:

我依旧不想打,如题

主要学习一下递归思想,别的没了
然后就是生成一个树节点,取列表指定树的下标
代码

def reConstructBinaryTree(pre,tin):
    if not pre or not tin:
        return None
    root = TreeNode(pre[0])
    tin_index = tin.index(pre[0])
    left = self.reConstructBinaryTree(pre[1:], tin[:tin_index])
    right = self.reConstructBinaryTree(pre[tin_index+1:], tin[tin_index + 1:])
    if left:
        root.left = left
    if right:
        root.right = right
    return root

为了测试用例,写了一个二叉树的打印

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
    def print_tree(self):
        if self.left:
            self.left.print_tree()
        print self.val
        if self.right:
            self.right.print_tree()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,475评论 1 31
  • 面试题7:重建二叉树 题目: 输入某二叉树的前序遍历和中序遍历的结果。请重建该二叉树。假设输入的前序遍历和中序遍历...
    lyoungzzz阅读 575评论 0 0
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,899评论 2 36
  • 【夏令营故事,感谢有你有我有他】 “本文参加#感悟三下乡,青春筑梦行#活动,本人承诺,文章内容为原创,且未在其他平...
    A_CaCtus阅读 750评论 5 11
  • 这世上还有什么比生命本身更迷人的事情呢?而生命之所以美丽,就在于经历与体验。面对艰难之事,其中奋斗的过程就是最迷人...
    爸爸要长肉阅读 111评论 0 0