树872. 叶子相似的树

Posted ocpc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树872. 叶子相似的树相关的知识,希望对你有一定的参考价值。

题目:

技术图片

 

 

 

解答:

方法:深度优先搜索


思路和算法:

首先,让我们找出给定的两个树的叶值序列。之后,我们可以比较它们,看看它们是否相等。

要找出树的叶值序列,我们可以使用深度优先搜索。如果结点是叶子,那么 dfs 函数会写入结点的值,然后递归地探索每个子结点。这可以保证按从左到右的顺序访问每片叶子,因为在右孩子结点之前完全探索了左孩子结点。

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12      bool leafSimilar(TreeNode* root1, TreeNode* root2) 
13      {
14         vector<int> leaves1;
15         vector<int> leaves2;
16         dfs(root1, leaves1);
17         dfs(root2, leaves2);
18 
19         return leaves1 == leaves2;
20     }
21 
22     void dfs(TreeNode* node, vector<int>& leaves) 
23     {
24         if (node == NULL) 
25         {
26             return;
27         }
28         if (node->left == NULL && node->right == NULL)
29         {
30             leaves.push_back(node->val);
31         }
32         
33         dfs(node->left, leaves);
34         dfs(node->right, leaves);
35     }
36 };

 

以上是关于树872. 叶子相似的树的主要内容,如果未能解决你的问题,请参考以下文章

872. 叶子相似的树 / 剑指 Offer 33. 二叉搜索树的后序遍历序列 / 剑指 Offer 34. 二叉树中和为某一值的路径 / 剑指 Offer 35. 复杂链表的复制

leetcode 872. 叶子相似的树(Leaf-Similar Trees)

872. 叶子相似的树

LeetCode 872 叶子相似的树[DFS 二叉树] HERODING的LeetCode之路

leetcode872. 叶子相似的树(c++)

我用java刷 leetcode 872. 叶子相似的树