コード例 #1
0
ファイル: Tree Summing.c プロジェクト: Hurray0/acm
int creatTree(char * str_tree, int position, Node ** head)
{
	int i, curser=0, j, number, END=1;
	Node * left, * right;
	for(i=position; str_tree[i]!='\0'; i++)
	{
		if(str_tree[i] == '(' && !curser)
		{
			curser++;
		}
		else if(str_tree[i] == ')')
		{
			if(END)
			{
				*head = NULL;
			}

			return i;
		}
		else if(str_tree[i] == '(')
		{

			if(curser == 1)
			{
				i = creatTree(str_tree, i, &left);

				(*head) -> leftNode = left;
				curser++;
			}
			else if(curser == 2)
			{
				i = creatTree(str_tree, i, &right);
				(*head) -> rightNode = right;
			}
		}
		else
		{
			END = 0;
			for(number=0; str_tree[i]!=')'&&str_tree[i]!='('; i++)
			{
				number *= 10;
				number += str_tree[i]-48;
			}
			i--;
			(*head) = (Node*)malloc(sizeof(Node));
			(*head) -> value = number;
			(*head) -> leftNode = NULL;
			(*head) -> rightNode = NULL;
		}
	}
	return -1;
}
コード例 #2
0
ファイル: iterative.c プロジェクト: chenstine/quiz
int main()
{
    struct timespec start, end;

	TreeNode *root = NULL;
	root = creatTree(root);

	/* assert - bounds checking */
	assert(root != NULL &&	"Root is null!");

    /* compute the execution time */
    clock_gettime(CLOCK_REALTIME, &start);

    int i;
    for (i = 0; i < 10000; ++i) {
		flatten(root);
	}

    clock_gettime(CLOCK_REALTIME, &end);
    double cpu_time = diff_in_second(start, end);

	printTree(root);
    printf("execution time: %lf sec\n", cpu_time);

    return 0;
}
コード例 #3
0
ファイル: Tree Summing.c プロジェクト: Hurray0/acm
int main()
{
	int based_sum;
	char str_tree[501] = {'\0'};
	char temp;
	Node * head;

	while(scanf("%d", &based_sum)!=EOF)
	{
		int i=0, left=0, right=0;
		while(scanf("%c",&temp))
		{
			if(temp == '\n' || temp == '\t' || temp == ' '|| c==9 || c==10)
				continue;
			else
			{
				str_tree[i++] = temp;
				if(temp == '(') 
					left++;
				else if(temp == ')') 
					right++;
				if(left == right) 
					break;
			}
		}
		if(str_tree[1] == ')')
		{
			printf("no\n");
			continue;
		}
		creatTree(str_tree, 0, &head);
		// printTree(head, 0);
		if(isSum(head, based_sum))
			printf("yes\n");
		else
			printf("no\n");

		for(i=0; i<501 && str_tree[i]!='\0'; i++)
		{
			str_tree[i] = '\0';
		}
	}

	return 0;
}
コード例 #4
0
ファイル: treeMinimumDepth.c プロジェクト: iamon3/C_DFS
int main() {
    tree* root = NULL;
    root = creatTree();
    printf("Min Depth = %d\n",minDepth(root));
    return 0;
}