問題:輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)。
解答1:
知識點:
1.二叉樹的簡介。
二叉樹是n個有限元素的集合,該集合或者為空、或者由乙個稱為根(root)的元素及兩個不相交的、被分別稱為左子樹和右子樹的二叉樹組成,是有序樹。當集合為空時,稱該二叉樹為空二叉樹。在二叉樹中,乙個元素也稱作乙個結點。
二叉樹(binary tree)是指樹中節點的度不大於2的有序樹,它是一種最簡單且最重要的樹。二叉樹的遞迴定義為:二叉樹是一棵空樹,或者是一棵由乙個根節點和兩棵互不相交的,分別稱作根的左子樹和右子樹組成的非空樹;左子樹和右子樹又同樣都是二叉樹 [2] 。
2.二叉樹的結構。
public
class
solution
if(root1.val == root2.val)
}//遍歷左右孩子,樹root2是樹root1左子樹的子結構,樹root2是樹root1右子樹的子結構
return
hassubtree
(root1.left,root2)
||hassubtree
(root1.right,root2);}
//判斷是否為子結構
public
boolean
hassubtree1
(treenode tree1,treenode tree2)
if(tree1 == null)
if(tree1.val == tree2.val)
else
}}
刷題筆記《劍指offer》 第十七題 樹的子結構
題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 思路 1.如何遍歷一棵樹?前序遍歷 2.在根節點相同的情況下,如何判斷兩棵樹是否相同?a.當前節點相同 b.左子樹相同 c.右子樹相同 d.遞迴 3.在根節點相同的情況下,如何判斷tree2是tree1...
《劍指offer》第十七題(列印1到最大的n位數)
面試題17 列印1到最大的n位數 題目 輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則 列印出1 2 3一直到最大的3位數即999。include include using namespace std void printnumber char number bool incre...
牛客網 劍指Offer 索引
二維陣列中的查詢 替換空格 從尾到頭列印鍊錶 重建二叉樹 用兩個棧實現佇列 旋轉陣列的最小數字 斐波那契數列 跳台階 跳台階 矩形覆蓋 二進位制中1的個數 數值的整數次方 調整陣列順序使奇數字於偶數前面 鍊錶中倒數第k個結點 反轉鍊錶 合併兩個排序的鍊錶 樹的子結構 二叉樹的映象 順時針列印矩陣 包...