記錄刷題的過程。牛客和力扣中都有相關題目,這裡以牛客的題目描述為主。該系列預設採用python語言。
1、問題描述:
操作給定的二叉樹,將其變換為源二叉樹的映象。
2、資料結構:
二叉樹3、題解:
處理根節點,處理左子樹,處理右子樹。
# -*- coding:utf-8 -*-
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:# 返回映象樹的根節點
defmirror
(self, root)
:# write code here
ifnot root:
return
none
#處理根節點
root.left,root.right = root.right,root.left
#處理左子樹
self.mirror(root.left)
#處理右子樹
self.mirror(root.right)
return root
或者:
class
solution
:# 返回映象樹的根節點
defmirror
(self, root)
:# write code here
ifnot root:
return
root.left,root.right = self.mirror(root.right)
,self.mirror(root.left)
return root
4、複雜度分析:
時間複雜度:o(n),n結點數量
空間複雜度:o(n)
《劍指offer》牛客網java題解 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。從前序遍歷序列中找根,然後去中序遍歷序列中找根左面的為左子樹,右面的為右子樹,遞迴即可完成重建二叉樹。public class so...
牛客 劍指offer系列題解 序列化二叉樹
記錄刷題的過程。牛客和力扣中都有相關題目,這裡以牛客的題目描述為主。該系列預設採用python語言。1 問題描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先...
牛客《劍指Offer》 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。二叉樹原本可以用遞迴的方式定義,所以面對此類問題注意向遞迴的思想靠攏。將整棵樹的構造過程視為對其左右子樹的構造過程,關鍵如何劃分子樹...