树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)