1379. 找出克隆二叉树中的相同节点
2023-09-27 14:27:32 时间
Powered by:NEFU AB-IN
1379. 找出克隆二叉树中的相同节点
-
题意
给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original 中的目标节点 target。
其中,克隆树 cloned 是原始树 original 的一个 副本 。
请找出在树 cloned 中,与 target 相同 的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回 节点指针,其他语言返回节点本身)。 -
思路
DFS找值即可,这里提供两个DFS版本
- 第一版是返回void的DFS
- 第二版是直接返回结果的
-
代码
版本1
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* ans = new TreeNode(); void dfs(TreeNode* root, int val){ if(!root) return; if(root->val == val){ ans = root; return; } dfs(root->left, val); dfs(root->right, val); } TreeNode* getTargetCopy(TreeNode* original, TreeNode* cloned, TreeNode* target) { dfs(cloned, target->val); return ans; } };
版本2
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* dfs(TreeNode* root, int val){ if(!root) return nullptr; if(root->val == val){ return root; } auto left = dfs(root->left, val); // 先把值记下来,如果不空再返回 if(left) return left; auto right = dfs(root->right, val); if(right) return right; return nullptr; } TreeNode* getTargetCopy(TreeNode* original, TreeNode* cloned, TreeNode* target) { return dfs(cloned, target->val); } };
相关文章
- 数据结构与算法(周鹏-未出版)-第六章 树-6.3 二叉树基本操作的实现
- 【算法】【二叉树模块】利用并查集实现tarjan算法解决二叉树任意两个节点的最近祖先的批量查询问题
- 求二叉树中,任意两个节点之间的距离最大值是多少
- 二叉树——求最大节点和最小节点
- 数据结构之二叉树
- [LeetCode]104. 二叉树的最大深度
- [LeetCode]5398. 统计二叉树中好节点的数目
- 剑指offer编程题解法汇总4-重建二叉树
- 数据结构 | 二叉树的一些性质及证明、树的路径长度、结点的路径长度
- LeetCode114之二叉树展开为链表(相关话题:二叉树,递归)
- 110、【树与二叉树】leetcode ——450. 删除二叉搜索树中的节点:递归法+迭代法(C++版本)
- 93、【树与二叉树】leetcode ——222. 完全二叉树的节点个数:普通二叉树求法+完全二叉树性质求法(C++版本)
- 89、【树与二叉树】leetcode ——101. 对称二叉树:后序递归+迭代法+层次遍历(C++版本)
- [LeetCode] 814. Binary Tree Pruning 二叉树修剪
- [LintCode] Invert Binary Tree 翻转二叉树
- [LeetCode] 222. Count Complete Tree Nodes 求完全二叉树的节点个数
- LeetCode翻转二叉树
- 二叉树遍历算法的非递归实现
- leetcode 110. Balanced Binary Tree 平衡二叉树(简单)