题目要求
判断两课二叉树的叶子序列是否相等。叶子序列的定义,如下图的一棵二叉树,叶子序列是(6,7,4,9,8):
解题思路
由于要得到一棵二叉树的叶子结点的值,我们想到深度优先遍历。实际上这也是传统的DFS应用,我们只需要同时遍历两个数,对得到的序列进行判断是否相等即可。
易错点:
1、记得root为空的情况
2、vector& res
主要代码c++
/*** 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:vector<int>res1;vector<int>res2;bool leafSimilar(TreeNode* root1, TreeNode* root2) {
dfs(root1, res1);dfs(root2, res2);return res1 == res2;}void dfs(TreeNode* root,vector<int>& res){
if(root == NULL) return;if(root->left == NULL && root->right == NULL)res.push_back(root->val);dfs(root->left, res);dfs(root->right, res);}};