• leetcode-剑指32-I-OK


    // language c
    // 剑指32-I
    // https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/
    
    
    /**
     * 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* levelOrder(struct TreeNode* root, int* returnSize){
    	if(root==NULL){
    		returnSize[0]=0;
    		return NULL;
    	}
    	struct TreeNode* Queue[1000];
    	int tail = 1;	// 指向下一个入队的元素要待的位置
    	int head = 0;	// 指向下一个要出来的元素
    	Queue[0] = root;
    	void Enqueue(struct TreeNode* in){
    		Queue[tail] = in;
            tail = (tail+1)%1000;
    	}
    
    	struct TreeNode* Dequeue(){
            head = (head+1)%1000;
            if(head ==0)
                return Queue[999];
    		return Queue[head-1];
    	}
    
    	bool empty(){
    		if(head==tail)
    			return true;
    		return false;
    	}
    
    	// 先数个数
    	int count =0;
    	void GetNodeNum(struct TreeNode* root){
    		if(root!=NULL)
    			count++;
            else
                return;
    		GetNodeNum(root->left);
    		GetNodeNum(root->right);
    	}
    	GetNodeNum(root);
    	// 至此count已经是总个数了,接下来分配空间
    	returnSize[0] = count;
    	int * ans = (int*)malloc(sizeof(int)*count);
    	int fillnext=0;
    	void FillAnswer(int n){
    		ans[fillnext++]=n;
    	}
    
    	struct TreeNode* p;
    	while(!empty()){
    		p = Dequeue();
    		FillAnswer(p->val);
    		if(p->left!=NULL)
    			Enqueue(p->left);
    		if(p->right!=NULL)
    			Enqueue(p->right);
    	}
    
    	return ans;
    }
    
  • 相关阅读:
    Javascript 使用字符串
    JavaScript精简学习4(动态表单和链接处理)
    JavaScript 使用表单
    事半功倍之Javascript (2)
    jQuery隐藏按钮
    .NET线程同步之Interlocked和ReadWrite 锁线程同步——事件构造
    linux命令汇总
    好的设计能减少大量的工作
    Prism学习笔记
    编写C函数的技巧
  • 原文地址:https://www.cnblogs.com/gallien/p/14351852.html
Copyright © 2020-2023  润新知