【剑指offer】面试题26: 树的子结构(Java)
輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構)
代碼:
package offer;
class TreeNode
{
?? ?int val;
?? ?TreeNode left = null;
?? ?TreeNode right = null;
?? ?TreeNode(int val)
?? ?{
?? ??? ?this.val = val;
?? ?}
}
public class ti26 {
?? ?public static boolean HasSon(TreeNode node1,TreeNode node2)
?? ?{
?? ??? ?boolean result = false;
?? ??? ?if(node1!=null&&node2!=null)
?? ??? ?{
?? ??? ??? ?if(node1.val==node2.val)
?? ??? ??? ?{
?? ??? ??? ??? ?result = HasSon2(node1,node2);
?? ??? ??? ?}
?? ??? ??? ?if(!result)
?? ??? ??? ?{
?? ??? ??? ??? ?result = HasSon(node1.left,node2);
?? ??? ??? ?}
?? ??? ??? ?if(!result)
?? ??? ??? ?{
?? ??? ??? ??? ?result = HasSon(node1.right,node2);
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return result;
?? ?}
?? ?public static boolean HasSon2(TreeNode node1,TreeNode node2)
?? ?{
?? ??? ?if(node2==null)
?? ??? ?{
?? ??? ??? ?return true;
?? ??? ?}
?? ??? ?if(node1==null)
?? ??? ?{
?? ??? ??? ?return false;
?? ??? ?}
?? ??? ?if(node1.val!=node2.val)
?? ??? ?{
?? ??? ??? ?return false;
?? ??? ?}
?? ??? ?return HasSon2(node1.left,node2.left)&&HasSon2(node1.right,node2.right);
?? ??? ?
?? ?}
?? ?public static void main(String[] args)
?? ?{
?? ??? ?TreeNode node1 = new TreeNode(8);
?? ??? ?TreeNode node2 = new TreeNode(8);
?? ??? ?TreeNode node3 = new TreeNode(7);
?? ??? ?TreeNode node4 = new TreeNode(9);
?? ??? ?TreeNode node5 = new TreeNode(2);
?? ??? ?TreeNode node6 = new TreeNode(4);
?? ??? ?TreeNode node7 = new TreeNode(7);
?? ??? ?node1.left = node2;
?? ??? ?node1.right = node3;
?? ??? ?node2.left = node4;
?? ??? ?node2.right = node5;
?? ??? ?node5.left = node6;
?? ??? ?node5.right = node7;
?? ??? ?TreeNode node8 = new TreeNode(8);
?? ??? ?TreeNode node9 = new TreeNode(9);
?? ??? ?TreeNode node10 = new TreeNode(2);
?? ??? ?node8.left = node9;
?? ??? ?node8.right = node10;
?? ??? ?System.out.println(HasSon(node1,node8));
?? ?}
}
?
總結
以上是生活随笔為你收集整理的【剑指offer】面试题26: 树的子结构(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--1160.拼写单词(
- 下一篇: 【剑指offer】面试题21:调整数组顺