2021.5.10-(叶子相似的树)

题目链接:https://leetcode-cn.com/problems/leaf-similar-trees
题目描述:
请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。

举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。
如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。
如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。

题解:


/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public: 
    //先序遍历
    void travel(TreeNode* node, vector<int>& vec)
    {
        if(node == nullptr)
            return;
        if(node->left == nullptr && node->right == nullptr)
            vec.push_back(node->val);
        travel(node->left, vec);
        travel(node->right, vec);
    }
    bool leafSimilar(TreeNode* root1, TreeNode* root2) {
        vector<int> vec1;
        vector<int> vec2;
        travel(root1, vec1);
        travel(root2, vec2);
        if(vec2 == vec1)
            return true;
        else
            return false;
        
    }
};

posted @ 2021-05-10 13:23  张宵  阅读(42)  评论(0编辑  收藏  举报