輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
二、解題分析
1.定義乙個函式,用於判斷兩棵樹是否相等,public boolean hassubtree(treenode root1,treenode root2)
2.查詢大的樹種是否含有擬子樹的根節點相等的元素,找到後則以這個節點為起點,判斷這兩棵樹是否相等。
如果相等,return true。如果不相等,繼續去大樹的左孩子、右孩子中查詢與擬子樹根節點相等的元素,如果遍歷完還沒找到,
表示沒有這個結構,返回false,如果找到,則繼續使用has函式判斷兩棵樹是否相等。
3.在has函式中,注意遞迴終止條件有三個:
if(node1==null&&node2!=null)return false;
if(node2==null) return true;
if(node1.val!=node2.val)return false;
三、實現**
/**
public class treenode }*/
public class solution
if(!result)
if(!result)
}return result;
} private boolean has(treenode node1,treenode node2)
if(node2==null)
if(node1.val!=node2.val)return false;
return has(node1.left,node2.left)&&has(node1.right,node2.right);
}}
劍指Offer(十七) 樹的子結構
牛客網刷題筆記記錄。參考自 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 要查詢樹a中是否存在和樹b結構一樣的子樹,我們可以分為兩步 第一步在樹a中找到和b的根結點的值一樣的結點r,第二步再判斷樹a中以r為根節點的子樹是不是包含和樹b一樣的結構。這裡使用遞迴...
劍指offer(十七) 樹的子結構
題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 題解 首先理解題意,b是a的子結構的前提是,b樹是a樹的一部分,即從b的根節點開始,要與a其中乙個結點開始,結點值完全一致。從該節點開始判定是否相符 從a樹的左孩子開始判定是否相符 從a樹的右孩子開始判...
劍指offer 樹的子結構
華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 9 30 題目描述 輸入兩顆二叉樹a,b,判斷b是不是a的子結構。解析 解決樹類問題的時候遞迴是乙個很好的解決方案,並且寫的程式簡單,理解起來也很容易。遞迴的時候謝了乙個函式來判斷當前兩個根節點對應的子樹是否相等 issubtree 不想...