Beispiel #1
0
void printFlattenedTree(int A[], int maxLength, FILE *file)
{
    int i;
    int currentLevel;
    int nextLevelStartIndex;
    int height;

    // Calculate the height of the tree this way to avoid
    // relying on (log maxLength)
    for (currentLevel = 0, i = 0; i < maxLength; i++) {
        nextLevelStartIndex = (1 << (currentLevel + 1)) - 1;
        if ((i + 1) == nextLevelStartIndex) {
            currentLevel++;
        }
    }

    height = currentLevel;

    for (currentLevel = 0, i = 0; i < maxLength; i++) {
        nextLevelStartIndex = (1 << (currentLevel + 1)) - 1;

        printTreeNode(A[i], height - currentLevel, file);

        if ((i + 1) == nextLevelStartIndex) {
            currentLevel++;
            fprintf(file, "\n\n");
        }
    }
    
    fprintf(file, "\n\n");
}
Beispiel #2
0
TreeNode *newTreeNode(NodeKind kind){
	TreeNode* t = (TreeNode *) malloc(sizeof(TreeNode));
	t->child = NULL;
	t->sibling = NULL;
	t->nodekind = kind;
	t->tokenString = NULL;
	t->nChild = 0;
	if (traceflag) printTreeNode(t);

	return t;
}
Beispiel #3
0
void printTree(TreeNode* pRoot)
{
    printTreeNode(pRoot);

    if(pRoot != NULL)
    {
        std::vector<TreeNode*>::iterator i = pRoot->m_vChildren.begin();
        while(i < pRoot->m_vChildren.end())
        {
            printTree(*i);
            ++i;
        }
    }
}
void printTree(treeNode * ptr, int indent){
  if(ptr==NULL) return;
  printf("%*s", indent, "");
  printTreeNode(ptr);
  indent += 4;
  treeNode * temp = ptr->children[0];
  int i=1;
  while(temp!=NULL && i < temp->numChildren){
    printTree(temp, indent);
    temp = ptr->children[i];
    i++;
  }
  indent -= 4;
}
Beispiel #5
0
TreeNode *newTokenTreeNode(NodeKind kind, char* tokenString){
	TreeNode* t = (TreeNode *) malloc(sizeof(TreeNode));
	t->child = NULL;
	t->sibling = NULL;
	t->nodekind = kind;
	t->nChild = 0;
	t->lineno = lineno;
	int len = strlen(tokenString);
	t->tokenString = (char *)malloc(len + 1);
	strcpy(t->tokenString, tokenString);
	(t->tokenString)[len] = '\0';
	if (traceflag) printTreeNode(t);

	return t;
}
	void printFromTopToBottom(TreeNode* root){
		if(root==NULL){
			return;
		}

		std::deque<TreeNode*> dequeTreeNode;
		dequeTreeNode.push_back(root);

		while(!dequeTreeNode.empty()){
			TreeNode* pNode=dequeTreeNode.front();
			dequeTreeNode.pop_front();

			printTreeNode(pNode);

			if(pNode->left!=NULL){
				dequeTreeNode.push_back(pNode->left);
			}
			if(pNode->right!=NULL){
				dequeTreeNode.push_back(pNode->right);
			}
		}
	}