网站备案后可以改名吗,php网站做退出的代码,随机图片网站,wordpress自定义字段值调用通过万岁#xff01;#xff01;#xff01;
题目#xff1a;给你两棵树#xff0c;然后问subRoot是不是root的子树。也就是root某个节点的所有孩子节点在值和结构上完全与subRoot相同。思路#xff1a;我的思路比较简单#xff0c;就是遍历root#xff0c;遇到root中…通过万岁
题目给你两棵树然后问subRoot是不是root的子树。也就是root某个节点的所有孩子节点在值和结构上完全与subRoot相同。思路我的思路比较简单就是遍历root遇到root中节点值与subRoot的根节点相同的就去判断下从root的这个节点开始下面部分是不是与subRoot相同。值得注意的是因为要求值和结构完全相同所以遍历的顺序要一致。此外如果我们发现了subRoot是root的子树的时候要停止遍历。技巧树的遍历
java代码
class Solution {boolean ret false;public boolean isSubtree(TreeNode root, TreeNode subRoot) {preorderByRecursion(root, subRoot);return ret;}/*** 前序遍历root这个树** param root* param subRoot*/private void preorderByRecursion(TreeNode root, TreeNode subRoot) {if (root null || ret) return;if (root.val subRoot.val) {ret traverseTree(root, subRoot);if (ret) {return;}}preorderByRecursion(root.left, subRoot);preorderByRecursion(root.right, subRoot);}/*** 遍历两个树看下结构和值是不是相同** param root* param subRoot* return*/private boolean traverseTree(TreeNode root, TreeNode subRoot) {if (subRoot null root null) {return true;} else if (root null) {return false;} else if (subRoot null) {return false;} else {if (root.val subRoot.val) {boolean left traverseTree(root.left, subRoot.left);if (left) {return traverseTree(root.right, subRoot.right);}return false;} else {return false;}}}
}总结题目不是特别难但是好久不写递归了有点生疏。其实我们可以找到拿到两棵树的中序和后续的字符串然后判断下subRoot字符串是不是的包含在root的字符串之内但是需要中序和后序都满足不过我没有测试。