在線編程--相同子樹問題

對於兩棵彼此獨立的二叉樹A和B,請編寫一個高效算法,檢查A中是否存在一棵子樹與B樹的拓撲結構完全相同。
給定兩棵二叉樹的頭結點A和B,請返回一個bool值,代表A中是否存在一棵同構於B的子樹。

這裏寫圖片描述

本題可以從根節點一個一個進行比較,但時間複雜度爲O(M*N);
選擇用數組進行判斷,先把兩個樹用相同方式序列化,如果StrA包含StrB,則B樹是A樹的子樹。

public static boolean chkIdentical(TreeNode A, TreeNode B) {
        // write code here
        String strA = serialize(A);
        String strB = serialize(B);
        if (strA.contains(strB)) {
            return true;
        } else {
            return false;
        }
    }

    public static String serialize(TreeNode tree){
        if(tree==null){
            return "#!";
        }
        String res=tree.val+"!";
        res+=serialize(tree.left);
        res+=serialize(tree.right);
        return res;
    }
發佈了88 篇原創文章 · 獲贊 31 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章