宣告:本題是劍指offer中的一道題目,但是看了何海濤的日誌,我的思路和他的思路有些不同。這裡寫下我自己思路和**。
題目:二叉樹的結點定義如下。
思路:判斷root2是不是root1的子樹,首先判斷從root1開始的最上面的子樹和root2是不是相同,如果相同,則返回true,如果不相同就判斷root1.left和root1.right對應的子樹是不是包含root2。
所以**分兩個函式,乙個函式是hassubtree(treenode root1, treenode root2),用來判斷root2是不是root1的子樹。
subtree(treenode root1,treenode root2)用來判斷從root1節點起的最上面的子樹是不是和root2相等。
**:
/**
* 輸入兩棵二叉樹a和b,判斷樹b是不是a的子結構。
* @author hongbin.gao
* * 思路:現在a中尋找與b樹的根節點值相同的節點,然後再判斷這個節點下面是不是與b樹相同
* */
class treenode
}public class hassubtree
public static boolean hassubtree(treenode root1, treenode root2)
public static boolean subtree(treenode root1,treenode root2)
else
return false;
}}
樹的子結構
題目 輸入兩顆二叉樹a和b 判斷b是不是a的子結構 二叉樹結點定義如下 首先 從樹根開始遍歷樹 如果結點與 b的根結點值相同 則繼續遍歷a的左子樹 以及b的左子樹 如果左子樹相同則遍歷a的右子樹以及b的左子樹 如果左右子樹都相同則 a包含b 如果結點與b的根節點值不同 則遍歷到a的左孩子 重複上述判...
樹的子結構
來自 劍指offer 的面試題18。題目 輸入兩棵二叉樹a和b,判斷b是不是a的子結構。二叉樹節點定義如下 public class treenode 思路分析 首先,在tree1中找到和tree2的根節點的值一樣的結點r 然後,再判斷tree1中以r為根結點的子樹是不是包含和tree2一樣的結構。...
樹的子結構
輸入兩顆二叉樹a,b,判斷b是不是a的子結構 思路 1 先判斷兩棵樹是否為空,是則沒有子樹 2 當兩棵樹為非空時,判斷當前的兩個根節點是否為子樹關係,若值相等,則繼續判斷左右子樹是否也對應相等 3 當根節點非子樹關係時,再判斷a樹的左右子樹和b樹是否有子樹。public class treenode...