872. Leaf-Similar Trees

 

按序记录每棵树叶子节点。比较是否一致。

前序,中序,后序都可以。

Consider all the leaves of a binary tree.  From left to right order, the values of those leaves form a leaf value sequence.

For example, in the given tree above, the leaf value sequence is (6, 7, 4, 9, 8).

Two binary trees are considered leaf-similar if their leaf value sequence is the same.

Return true if and only if the two given trees with head nodes root1 and root2 are leaf-similar.

 

Note:

  • Both of the given trees will have between 1 and 100 nodes.
/**
 * 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:
    bool leafSimilar(TreeNode* root1, TreeNode* root2) {
        vector<int> res1;
        vector<int> res2;
        preorder(root1,res1);
        preorder(root2,res2);
        if(res1.size()!=res2.size())
            return false;
        for(int i=0;i<res1.size();++i){
            if(res1[i]!=res2[i])
                return false;
        }
        return true;
    }
    void preorder(TreeNode* root,vector<int>& res){
        if(root==NULL)
            return;
        if(root->left==NULL && root->right==NULL){
            res.push_back(root->val);
            return;
        }
        preorder(root->left,res);
        preorder(root->right,res);
    }
};

 ac后看了solution, 

        if(res1.size()!=res2.size())
            return false;
        for(int i=0;i<res1.size();++i){
            if(res1[i]!=res2[i])
                return false;
        }
        return true;

可以简写为

return res1==res2;

 

posted @ 2018-10-14 20:04  hopskin1  阅读(224)  评论(0编辑  收藏  举报