輸入兩棵二叉樹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...