拓撲結構相同子樹(牛客網)

題目描述

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

給定兩棵二叉樹的頭結點AB,請返回一個bool值,代表A中是否存在一棵同構於B的子樹。

 


判斷A中是否存在一顆子樹與B相同。

可以先將A和B都轉化爲同一遍歷順序下的字符串,空指針用#填充

再判斷A中有沒有子字符串是B

可以直接調用String中contains方法,也可以寫一個KMP算法

重點是,將樹問題轉化爲字符串問題

貼代碼

import java.util.*;

/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;
    public TreeNode(int val) {
        this.val = val;
    }
}*/
public class IdenticalTree {
    public boolean chkIdentical(TreeNode A, TreeNode B) {
        // write code here
        String treeString1 = getTreeString(A);
        String treeString2 = getTreeString(B);
        
        return treeString1.contains(treeString2);
    }
    
    public static String getTreeString(TreeNode root){
        if (root == null){
            return "#";
        }
        return root.val + getTreeString(root.left) + getTreeString(root.right);
    }
}

 

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