參考資訊:
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)
{
#define MAX_SIZE 101
int st = 0;
int sp = 0;
int *r = calloc(MAX_SIZE, sizeof(int));
struct TreeNode *q[MAX_SIZE] = { 0 };
*returnSize = 0;
if (!root) {
return r;
}
q[sp++] = root;
while (st < sp) {
int i = 0;
int len = sp;
r[(*returnSize)++] = q[sp - 1]->val;
for (i = st; i < len; i++) {
st += 1;
if (q[i]->left) {
q[sp++] = q[i]->left;
}
if (q[i]->right) {
q[sp++] = q[i]->right;
}
}
}
return r;
}