LeetCode Java刷题笔记—572. 另一棵树的子树
Posted 刘Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记—572. 另一棵树的子树相关的知识,希望对你有一定的参考价值。
给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。
简单难度。这道题和剑指 Offer 26. 树的子结构比较相似,采用双递归即可解决。三种情况,要么root等于subRoot,要么root的左子树等于subRoot,要么root的右子树等于subRoot。只要满足一个要求即可返回true,等价于前序遍历。
public boolean isSubtree(TreeNode root, TreeNode subRoot)
if (root == null)
return false;
//要么root等于subRoot,要么root的左子树等于subRoot,要么root的右子树等于subRoot
//只要满足一个要求即可返回true,等价于前序遍历。
return dfs(root, subRoot) || isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);
private boolean dfs(TreeNode root, TreeNode subRoot)
if (root == null && subRoot == null)
return true;
if (root == null || subRoot == null || root.val != subRoot.val)
return false;
return dfs(root.left, subRoot.left) && dfs(root.right, subRoot.right);
以上是关于LeetCode Java刷题笔记—572. 另一棵树的子树的主要内容,如果未能解决你的问题,请参考以下文章