码迷,mamicode.com
首页 > 其他好文 > 详细

【树】872. 叶子相似的树

时间:2020-05-03 16:51:37      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:ini   back   null   nod   sim   roo   完全   比较   height   

题目:

技术图片

 

 

 

解答:

方法:深度优先搜索


思路和算法:

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

要找出树的叶值序列,我们可以使用深度优先搜索。如果结点是叶子,那么 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. 叶子相似的树

标签:ini   back   null   nod   sim   roo   完全   比较   height   

原文地址:https://www.cnblogs.com/ocpc/p/12822056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!