Cover image for Classic Interview 150 Problem P199: Binary Tree Right Side View

Classic Interview 150 Problem P199: Binary Tree Right Side View


Timeline

Timeline

2025-10-31

init

Level-order traversal

Problem:

In level-order traversal, the element at the tail of the queue before traversing each level is exactly the element we need for the right side view.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
/** * Definition for a binary tree node. **/struct TreeNode {	int val;	TreeNode *left;	TreeNode *right;	TreeNode()		: val(0)		, left(nullptr)		, right(nullptr)	{	}	TreeNode(int x)		: val(x)		, left(nullptr)		, right(nullptr)	{	}	TreeNode(int x, TreeNode *left, TreeNode *right)		: val(x)		, left(left)		, right(right)	{	}};#include <vector>#include <queue>using std::vector;using std::queue;class Solution {    public:	vector<int> rightSideView(TreeNode *root)	{		int i, n;		vector<int> res;		queue<TreeNode *> que;		TreeNode *p;		if (root == nullptr) {			return res;		}		que.push(root);		while (!que.empty()) {			n = que.size();			res.push_back(que.back()->val);			for (i = 0; i < n; i++) {				p = que.front();				if (p->left) {					que.push(p->left);				}				if (p->right){				que.push(p->right);				}				que.pop();			}		}		return res;	}};

leetcode hot 100 rewrite

1234567891011121314151617181920212223242526272829303132333435
#include <vector>#include <queue>using std::vector;using std::queue;class Solution {    public:        vector<int> rightSideView(TreeNode *root)        {                int i, n;                queue<TreeNode *> que;                TreeNode *p = root;                vector<int> res;                if (p)                        que.push(p);                while (!que.empty()) {                        n = que.size();                        for (i = 0; i < n; i++) {                                p = que.front();                                que.pop();                                if (i == n - 1)                                        res.push_back(p->val);                                if (p->left)                                        que.push(p->left);                                if (p->right)                                        que.push(p->right);                        }                }                return res;        }};
Loading comments…