劍指offer 樹 遞迴

2021-10-03 16:09:40 字數 1641 閱讀 1103

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)

回溯

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

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

def hassubtree(self, proot1, proot2):

if not (proot2 and proot1) :

return false

if proot2.val == proot1.val:

left = true

right = true

if proot2.left:

if not self.hassubtree(proot1.left, proot2.left):

left = false

if proot2.right:

if not self.hassubtree(proot1.right, proot2.right):

right = false

if not (left and right):

if not (self.hassubtree(proot1.left,proot2) or self.hassubtree(proot1.right,proot2)):

return false

else:

if self.hassubtree(proot1.left, proot2) or self.hassubtree(proot1.right, proot2):

return true

else:

return false

return true

操作給定的二叉樹,將其變換為源二叉樹的映象。

二叉樹的映象定義:源二叉樹 

8/ \

6 10

/ \ / \

5 7 9 11

映象二叉樹

8/ \

10 6

/ \ / \

11 9 7 5

遞迴

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

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

# 返回映象樹的根節點

def mirror(self, root):

if root:

temp = root.right

root.right = root.left

root.left = temp

self.mirror(root.left)

self.mirror(root.right)

return root

劍指offer 迴圈遞迴

class solution return res 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。class solution return res 乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法...

劍指offer 樹的子結構(遞迴 C )

原題鏈結 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 相似題目 leetcode 題解 1367.二叉樹中的列表 樹的子結構 變形 c 二叉樹 遞迴 o n m o nm o nm 此題的 分為兩個部分 遍歷樹a中的所有非空節點r 同時用定義issame ...

劍指offer 樹的深度非遞迴JS

題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度 思路 使用層次遍歷,在每一層節點的末尾加上標記0,每次出佇列遇到標記0,深度 1 關鍵點是最後乙個標記,此時隊列為空,要特判 function treedepth pro...