[劍指offer] JAVA版題解 面試題26

在這裏插入圖片描述

代碼演示:

package swordfingeroffer;

/**
 * create by
 *
 * @Author 羅志遠
 * @on 2020-06-02.
 * @time 0:23
 */
public class InterviewQuestion26 {
    public static class BinaryTreeNode {
        int value;
        BinaryTreeNode left;
        BinaryTreeNode right;

        public BinaryTreeNode(int value) {
            this.value = value;
        }
    }

    public boolean hasSubtree(BinaryTreeNode pRoot1, BinaryTreeNode pRoot2) {
        boolean result = false;
        if (pRoot1 != null && pRoot2 != null) {
            if (pRoot1.value == pRoot2.value) {
                result = DoesTree1HaveTree2(pRoot1, pRoot2);
            }
            if(!result) {
                result = hasSubtree(pRoot1.left, pRoot2);
            }
            if (!result) {
                result = hasSubtree(pRoot1.right, pRoot2);
            }
        }
        return result;
    }

    private boolean DoesTree1HaveTree2(BinaryTreeNode pRoot1, BinaryTreeNode pRoot2) {
        if (pRoot2 == null) {
            return true;
        }
        if (pRoot1 == null) {
            return false;
        }
        if (pRoot1.value != pRoot2.value) {
            return false;
        }
        return DoesTree1HaveTree2(pRoot1.left, pRoot2.left) || DoesTree1HaveTree2(pRoot1.right, pRoot2.right);
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章