按序记录每棵树叶子节点。比较是否一致。
前序,中序,后序都可以。
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
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) {} * }; */ 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;