标签: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 };
标签:ini back null nod sim roo 完全 比较 height
原文地址:https://www.cnblogs.com/ocpc/p/12822056.html