LeetCode——Leaf-Similar Trees(872)
阿新 • • 發佈:2018-12-14
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
root1
and root2
are leaf-similar.
Note:
- Both of the given trees will have between
1
and100
nodes.
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ static const auto __ = []() { ios::sync_with_stdio(false); cin.tie(nullptr); return nullptr; }(); class Solution { public: bool leafSimilar(TreeNode* root1, TreeNode* root2) { vector<int> r1, r2; r1 = getLeafValue(root1); r2 = getLeafValue(root2); if(r1.size()!=r2.size()) return false; for(int i=0;i<r1.size();++i) { if(r1[i]!=r2[i]) return false; } return true; } vector<int> getLeafValue(TreeNode* root) { vector<int> res; vector<TreeNode*> vec; if(!root) return res; vec.push_back(root); TreeNode* temp; while(!vec.empty()) { temp = vec.back(); vec.pop_back(); if(temp->right!=NULL) vec.push_back(temp->right); if(temp->left!=NULL) vec.push_back(temp->left); if((temp->left==NULL)&&(temp->right==NULL)) res.push_back(temp->val); } return res; } };