题解 | #从上往下打印二叉树#

从上往下打印二叉树

https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
#include <stdlib.h>
int* PrintFromTopToBottom(struct TreeNode* root, int* returnSize ) {
    // write code here
    int* ret = (int*)malloc(sizeof(int)*1001);  //为返回值申请空间
    int retSize = 0;        //存储返回值长度
    struct TreeNode* st[1001];  //模拟队列
    int stStart = -1, stEnd = -1;   //队列头和队列尾指针
    struct TreeNode* node;      //出队元素
    if(root == NULL) return NULL;   //如果传入二叉树为空,返回NULL
    st[++stEnd] = root;         //root入队
    while(stStart < stEnd){     //队列不为空
        node = st[++stStart];   //出队
        if(node->left)          //如果出队元素左右子树不为空,则分别入队
            st[++stEnd] = node->left;
        if(node->right)
            st[++stEnd] = node->right;
        ret[retSize++] = node->val; //将出队元素的val放入返回数组中
    }
    *returnSize = retSize;  //更新返回数组的长度
    return ret;
}

全部评论

相关推荐

Rena1ssance_:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
求面试求offer啊啊啊啊:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务