赞
踩
题目:
题解:
- #define MAX_NODE_NUM 100
- int* rightSideView(struct TreeNode* root, int* returnSize){
- if (root == NULL) {
- *returnSize = 0;
- return NULL;
- }
-
- int *res = (int *)malloc(sizeof(int) * MAX_NODE_NUM);
- int cnt = 0;
- struct TreeNode **record = (struct TreeNode **)malloc(sizeof(struct TreeNode *) * MAX_NODE_NUM);
- int head = 1;
- int tail = 0;
- record[0] = root;
-
- while (head > tail) {
- int turn = head - tail;
- for (int i = 0; i < turn; i++) {
- struct TreeNode *cur = record[tail + i];
- if (cur->left != NULL) {
- record[head++] = cur->left;
- }
- if (cur->right != NULL) {
- record[head++] = cur->right;
- }
- if (i == turn - 1) {
- res[cnt++] = cur->val;
- }
- }
- tail += turn;
- }
-
- *returnSize = cnt;
- return res;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。