python資料結構 二叉樹重構

2021-10-05 12:57:12 字數 1160 閱讀 2426

相似問題集合:

1.從前序與中序遍歷序列構造二叉樹 leetcode105

2.從中序與後序遍歷序列構造二叉樹 leetcode106

解決套路:

根據給定的前/中/後需遍歷序列,確定root,left,right的位置,然後遞迴解決。

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

# 1.根據前序和中序還原二叉樹

class solution:

def buildtree(self, preorder: list[int], inorder: list[int]) -> treenode:

if not preorder:

return

root = treenode(preorder[0])

i = inorder.index(root.val)

root.left = self.buildtree(preorder[1:i+1], inorder[:i])

root.right = self.buildtree(preorder[i+1:], inorder[i+1:])

return root

# 2.根據中序和後序還原二叉樹

class solution:

def buildtree(self, inorder: list[int], postorder: list[int]) -> treenode:

if not inorder:

return

root = treenode(postorder[-1])

i = inorder.index(postorder[-1])

root.left = self.buildtree(inorder[:i], postorder[:i])

root.right = self.buildtree(inorder[i+1:], postorder[i:-1])

return root

資料結構 二叉樹的重構

問題描述 已知二叉樹的先序和中序序列,然後還原該二叉樹。1 首先通過先序遍歷找到首元素即為根節點。2 再通過中序遍歷找到根節點的左邊序列,即為左子樹,根節點的右邊即為右子樹。3 再對二叉樹的左子樹和右子樹進行遞迴,遞迴到葉子結點,遞迴結束。struct treenode reconstructbin...

資料結構與演算法 重構二叉樹

給你一顆二叉樹,然後讓你用 實現建立的過程,緊接著用 實現它的前序,中序,後序遍歷。例如給妮這樣一顆二叉樹 如下 注釋很清楚 package jzoffer 二叉樹鏈式儲存 author lsm public class tree 建立一棵二叉樹 a b c d e f param root aut...

Python 二叉樹資料結構

二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 將二叉樹的節點定義為乙個物件,節點之間通過類似鍊錶的鏈結方式來連線。二叉樹的遍歷方式 前序遍歷 eacbdgf 中序遍歷 abcdegf 後序遍歷 bdcafge 層次遍...