參考資訊:
https://www.cnblogs.com/grandyang/p/4392254.html
題目:

解答:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* rightSideView(struct TreeNode* root, int* returnSize)
{
int *r = NULL;
int q_st = 0;
int q_ep = 0;
struct TreeNode *q_buf[101] = { 0 };
r = malloc(sizeof(int) * 101);
*returnSize = 0;
if (!root) {
return r;
}
q_buf[0] = root;
q_ep += 1;
while ((q_ep - q_st) > 0) {
int cc = 0;
int s0 = q_st;
int s1 = q_ep;
r[(*returnSize)++] = q_buf[s1 - 1]->val;
for (cc = s0; cc < s1; cc++) {
q_st += 1;
if (q_buf[cc]->left) {
q_buf[q_ep++] = q_buf[cc]->left;
}
if (q_buf[cc]->right) {
q_buf[q_ep++] = q_buf[cc]->right;
}
}
}
return r;
}