leetcode199-二叉树的右视图
199. 二叉树的右视图
这道题BFS很容易想到。但DFS没想出来。
这是BFS
vector<int> rightSideView(TreeNode* root) { if(root==nullptr) return {}; queue<TreeNode*> qqq; vector<int> res; qqq.push(root); while(!qqq.empty()) { int size=qqq.size(); for(int i=0;i<size;i++) { TreeNode *t=qqq.front(); qqq.pop(); if(i==size-1) res.push_back(t->val); if(t->left) qqq.push(t->left); if(t->right) qqq.push(t->right); } } return res; }
这是DFS,主要DFS太妙了,真的没想到
class Solution { public: vector<int> res; void dfs(TreeNode* root,int index) { if(root==nullptr) return; if(index==res.size()) { res.push_back(root->val); } dfs(root->right,index+1); dfs(root->left,index+1); } vector<int> rightSideView(TreeNode* root) { dfs(root,0); return res; } };