拓扑结构相同子树(牛客网)

xiaoxiao2025-04-30  8

题目描述

对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。

给定两棵二叉树的头结点A和B,请返回一个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); } }

 

转载请注明原文地址: https://www.6miu.com/read-5029471.html

最新回复(0)