199.二叉树的右视图
想象你站在二叉树的右侧,你能看见的就是二叉树的右视图
例如
输入:root = [1,2,3,null,5,null,4]
输出:[1,3,4]
为了获得二叉树的右视图,可以采用深度优先遍历(DFS)的方法。具体步骤如下:首先遍历右子树,确保在首次到达某一深度时,最先访问到的是最右侧的节点。然后遍历左子树,当首次到达某一深度时,该节点即为右视图可见的节点。
class Solution {
public:vector<int> ans;void dfs(TreeNode* root,int depth) {if (!root) return;if (ans.size() == depth) {//某个深度首次到达ans.push_back(root->val);}dfs(root->right,depth + 1);dfs(root->left,depth + 1);}vector<int> rightSideView(TreeNode* root) {dfs(root,0);return ans;}
};
时间复杂度:O(n),n为节点个数
空间复杂度:O(h),h为树的高度,最坏情况,树退化成一条链,空间复杂度为O(n)