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

从上往下打印二叉树

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

c语言实现层序遍历

使用队列实现,将每一层放入队列,然后设置队列头和队列尾

 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
int* PrintFromTopToBottom(struct TreeNode* root, int* returnSize ) {
    if(root==NULL){
        return NULL;
     }
    int ans[1000];
    int nodes_num=0;
    struct TreeNode *nodes[1000];
    int pre=0,end=0,tempend=0;
    nodes[end++]=root;
    ans[nodes_num++]=root->val;
    while(pre!=end){
        tempend=end;
        for(;pre<tempend;pre++){
            if(nodes[pre]->left!=NULL){
                nodes[end++]=nodes[pre]->left;
                ans[nodes_num++]=nodes[pre]->left->val;
            }
                
            if(nodes[pre]->right!=NULL)
            {
                nodes[end++]=nodes[pre]->right;
                ans[nodes_num++]=nodes[pre]->right->val;
            }
        }                       
    }
    *returnSize=nodes_num;
    return ans;
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务