// Driver program to test above functions
int main()
{
    struct node* root1=NULL,*root2=NULL;
    struct Queue* queue1=createQueue(SIZE),*queue2 = createQueue(SIZE);
    int i;

    for(i = 1; i <= 12; ++i)
        insert(&root1,i, queue1);
    for(i = 1; i <= 12; ++i)
        insert(&root2,i, queue2);


     mirror(root2);
    printf("The tree_1 elements are: ");
      levelOrder(root1);
        printf("\nThe tree_2 elements are: ");
      levelOrder(root2);
    printf("\n");

    if(checkmirror(root1,root2))
      printf("\nThe trees are mirror image");
    else
       printf("\nThe trees are not  mirror image");
    return 0;
}
 void levelOrder(TreeNode* root, vector<vector<int>> &vec, int depth) {
     if(!root) return ;
     if(vec.size() == depth)
         vec.push_back(vector<int>());
     vec[depth].push_back(root->val);
     if(root->left) levelOrder(root->left, vec, depth+1);
     if(root->right) levelOrder(root->right, vec, depth+1);
 }
示例#3
0
	void levelOrder(TreeNode* root, int iDeepth, VVI& result) {
		if (!root) return;
		if (iDeepth >= result.size())
			result.resize(iDeepth + 1);
		result[iDeepth].push_back(root->val);
		levelOrder(root->left, iDeepth + 1, result);
		levelOrder(root->right, iDeepth + 1, result);
	}
 void levelOrder(TreeNode* root, int level){
     if(!root){
         return;
     }
     if(res.size() < level){
         res.push_back(vector<int>{});
     }
     res[level-1].push_back(root->val);
     levelOrder(root->left, level+1);
     levelOrder(root->right, level+1);
 }
示例#5
0
文件: Heap.hpp 项目: cjurden/560Labs
void Heap::heapify()
{ 
  std::cout<<"original heap:"<<std::endl;
  levelOrder();
  int index = size-1;
  for(int i = int(floor((index-1)/2)); i>=0; i--)
  {
    std::cout<<"i = "<<i<<std::endl;
    trickleDown(i);
    levelOrder();
    std::cout<<"\n"<<std::endl;
  }
}
int main() {
    struct TreeNode *root = (struct TreeNode *)malloc(sizeof(struct TreeNode));
    root->val = 1;
    struct TreeNode *node1_1 = (struct TreeNode *)malloc(sizeof(struct TreeNode));
    node1_1->val = 2;
    struct TreeNode *node1_2 = (struct TreeNode *)malloc(sizeof(struct TreeNode));
    node1_2->val = 3;
    root->left = node1_1;
    root->right = node1_2;
    node1_1->left = NULL;
    node1_1->right = NULL;
    node1_2->left = NULL;
    node1_2->right = NULL;

    int returnSize = 0;
    int *columnSizes = (int *)malloc(sizeof(int));
    int **return_array = levelOrder(root, &columnSizes, &returnSize);

    assert(returnSize == 2);
    assert(return_array[0][0] == 1);
    assert(return_array[1][0] == 2);
    assert(return_array[1][1] == 3);

    return 0;
}
int main(){
  //[3,9,20,null,null,15,7]

	struct TreeNode* root = malloc(sizeof(struct TreeNode));
	root->val = 3;
	struct TreeNode* t1 = malloc(sizeof(struct TreeNode));
	t1->val = 9;
	struct TreeNode* t2 = malloc(sizeof(struct TreeNode));
	t2->val = 20;
	struct TreeNode* t3 = malloc(sizeof(struct TreeNode));
	t3->val = 15;
	struct TreeNode* t4 = malloc(sizeof(struct TreeNode));
	t4->val = 7;

	root->left = t1;
	root->right = t2;
	t1->left = NULL;
	t1->right = NULL;
	t2->left = t3;
	t2->right = t4;
	t3->left = t3->right = t4->left = t4->right = NULL;

	int* columnSizes = malloc(sizeof(int) * 10);
  int **result;
	int* returnSize = malloc(sizeof(int));
	result = levelOrder(root, &columnSizes, returnSize);

  printf("return size: %d\n", *returnSize);
  for(int i = 0; i < *returnSize; i++){
    for(int j = 0; j < columnSizes[i]; j++){
      printf("%d, ", result[i][j]);
    }
    printf("\n");
  }
}
示例#8
0
文件: tree.c 项目: dtnakamura/CS-201
int main(int argc, char **argv)
{
    int readInts;
    struct node *root = NULL;
    struct Queue *queue = createQueue(SIZE);
    FILE *fp;

    fp = fopen(argv[1],"r");
    if (fp == NULL)
        printf("NO SUCH FILE EXISTS. PLEASE TRY AGAIN.");
    while (fscanf(fp, "%d", &readInts) != EOF)
    {
        //printf("Inserting %d into tree...\n", readInts);
        treeInsert(&root, readInts, queue);
    }
    fclose(fp);

    //for (int i = 0; i <= 12; ++i)
    //  treeInsert(&root, i, queue);
    //maxHeapify(root);
    levelOrder(root);
    printf("SIZE is %d\n", SIZE);

    return 0;
}
 int findBottomLeftValue(TreeNode* root) {
     if(!root){
         return 0;
     }
     levelOrder(root, 1);
     return res.back().front();
 }
vector<vector<int>> levelOrderBottom(TreeNode* root) {
	vector<vector<int>> res;
	vector<TreeNode*> tp;
	if (root == NULL) return res;
	tp.push_back(root);
	levelOrder(res, tp);
	return res;
}
示例#11
0
}
void levelOrder(s* r,int level)
{
    if(r==NULL)
    {
        return;
    }
    else if(level==1)
        {
            printf("%c -> ",r->data);
            return;
        }
    else
        {
            level--;
            levelOrder(r->left,level);
            levelOrder(r->right,level);
        }
 vector<vector<int>> levelOrderBottom(TreeNode *root) {
     // write your code here
     vector<vector<int>> v = levelOrder(root);
     vector<vector<int>> v2;
     for (int i = v.size()-1; i >= 0; i--) {
         v2.push_back(v[i]);
     }        
     return v2;
 }
int main()
{
    struct TreeNode root;
    root.val = 3;
    root.left = NULL;
    root.right=NULL;
    int* columnSizes;
    int returnSize;
    levelOrder(&root, &columnSizes, &returnSize);
}
void levelOrder(vector<vector<int>>& res, vector<TreeNode*> tp){
	vector<TreeNode*> mvt;
	vector<int> mvi;
	if (tp.empty())
		return;
	for (int i = 0; i < tp.size(); i++){
		mvi.push_back(tp[i]->val);
		if (tp[i]->left != NULL) mvt.push_back(tp[i]->left);
		if (tp[i]->right != NULL) mvt.push_back(tp[i]->right);
	}
	levelOrder(res, mvt);
	res.push_back(mvi);
}
// Driver program to test above functions
int main()
{
    struct node* root = NULL;
    struct Queue* queue = createQueue(SIZE);
    int i;

    for(i = 1; i <= 12; ++i)
        insert(&root, i, queue);
    printf("The tree elements are: ");
    levelOrder(root);
    printf("\nThe height of the tree is %d",findheight(root));
    return 0;
}
// Driver program to test above functions
int main()
{
    struct node* root = NULL;
    struct Queue* queue = createQueue(SIZE);
    int i;
 
    for(i = 1; i <= 12; ++i)
        insert(&root, i, queue);
 
    levelOrder(root);
 
    return 0;
}
// Driver program to test above functions
int main()
{
    struct node* root = NULL;
    struct Queue* queue = createQueue(SIZE);
    int i,l=0;
    for(i = 1; i <= 8; ++i)
        insert(&root,i, queue);
    printf("The tree elements are: ");
    levelOrder(root);
    int res = findmaxlevel(root);
    printf("\nThe max level is %d and the corresponding sum is %d",res,max_sum);
    return 0;
}
 vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
     vector<vector<int>> result = levelOrder(root);
     
     int i = 1;
     
     while(i < result.size())
     {
         reverse(result[i].begin(),result[i].end());
         i += 2;
     }
     
     return result;
 }
// Driver program to test above functions
int main()
{
    struct node* root = NULL;
    struct Queue* queue = createQueue(SIZE);
    int i;

    for(i = 1; i <= 12; ++i)
        insert(&root,i, queue);
    printf("The tree elements are: ");
    levelOrder(root);
    printf("\nThe number of leaf nodes are %d",leafnode(root));
    printf("\nThe number of leaf nodes are %d",fullnode(root));
    return 0;
}
// Driver program to test above functions
int main()
{
    struct node* root = NULL;
    struct Queue* queue = createQueue(SIZE);
    int i;

    for(i = 1; i <= 12; ++i)
        insert(&root, rand(), queue);
    printf("The tree elements are: ");
    levelOrder(root);
    printf("\nThe max element using recursion is %d",findmaxwithrecursion(root));
    printf("\nThe max element withou using recursion is %d",findmaxwithoutrecursion(root));
    return 0;
}
示例#21
0
int main(){
	int *columnSizes ;
	int returnSize ;
	struct TreeNode* root = createTree() ;
	int** result = levelOrder(root,&columnSizes,&returnSize) ;
	for(int i=0;i<returnSize;i++){
		for(int j=0;j<columnSizes[i];j++){
			printf("%c",(char)result[i][j]) ;
		}
		printf("\n") ;
	}
//	printT(root) ;
	return 0 ;
}
 vector<vector<int> > levelOrder(TreeNode *root) {
     vector<vector<int>> ans;
     if(root == NULL)
         return ans;
     vector<int> base;
     base.push_back(root->val);
     ans.push_back(base);
     vector<vector<int>> left = levelOrder(root->left), right = levelOrder(root->right);
     for(int i = 0; i < left.size(); ++ i)
     {
         vector<int> temp = left[i];
         if(i < right.size())
             for(int j = 0; j < right[i].size(); ++ j)
                 temp.push_back(right[i][j]);
         ans.push_back(temp);
     }
     if(right.size() > left.size())
     {
         for(int i = left.size(); i < right.size(); ++ i)
             ans.push_back(right[i]);
     }
     return ans;
 }
示例#23
0
文件: outputTree.c 项目: clamiax/misc
/* function main begins program execution */
int main(void)
{ 
   int i; /* counter to loop from 1-10 */
   int item; /* variable to hold random values */
   TreeNodePtr rootPtr = NULL; /* tree initially empty */

   srand( time( NULL ) ); 
   printf( "The numbers being placed in the tree are:\n" );

   /* insert random values between 1 and 15 in the tree */
   for ( i = 1; i <= 10; i++ ) { 
      item = 1 + rand() % 10;
      printf( "%3d", item );
      insertNode( &rootPtr, item );
   } /* end for */

   printf("\n\nInsert the value to remove: ");
   scanf("%d", &item);

   if( deleteNode( &rootPtr, item ) ) {
      printf("Value not found or value is root: %d\n", item);
      return -1;
   }

   /* traverse the tree preOrder */
   printf( "\nThe preOrder traversal is:\n" );
   preOrder( rootPtr );

   /* traverse the tree inOrder */
   printf( "\n\nThe inOrder traversal is:\n" );
   inOrder( rootPtr );

   /* traverse the tree postOrder */
   printf( "\n\nThe postOrder traversal is:\n" );
   postOrder( rootPtr );

   /* traverse the tree levelOrder */
   printf( "\n\nThe levelOrder traversal is:\n" );
   levelOrder( rootPtr );

   puts("\n\nShow the tree\n\n");
   outputTree(rootPtr, 0);

   putchar('\n');

   return 0; /* indicates successful termination */

} /* end main */
// Driver program to test above functions
int main()
{
    struct node* root = NULL;
    struct Queue* queue = createQueue(SIZE);
    int i,key;

    for(i = 1; i <= 12; ++i)
        insert(&root,i, queue);
    printf("The tree elements are: ");
    levelOrder(root);
    printf("\nThe element you are searching for = ");
    scanf("%d",&key);
    int flag=0;
    if(findkey(root,key))
        printf("\nThe element exists in the tree");
    else
        printf("\nThe element doesnot exist in the tree");
    return 0;
}
示例#25
0
int main(int argc, char const *argv[])
{
	// int A[100];
	// findIJAncestor(A, 30, 90);
	BiTree t = createABiTree();
// question1
	preOrder(t);
	cout<<endl;
	inOrder(t);
	cout<<endl;
	postOrder(t);
	cout<<endl;
	levelOrder(t);
	cout<<endl;
	cout<<"height is "<<heightOfT(t)<<endl;
// question2
	// int pre[] = {500,64,25,0,37,37,37,26,59,328,74,115,97,92,86,106,109,261,214,212,151,213,226,221,254,240,275,263,312,468,353,337,351,393,355,362,460,444,441,427,412,396,427,439,459,453,496,490,476,635,542,540,529,514,540,532,580,574,559,553,544,574,630,638,751,673,648,665,660,745,732,692,690,678,707,989,970,828,778,773,774,779,791,790,816,815,822,908,860,852,856,862,867,904,942,928,937,972,974,976};
	// int in[]  = {0,25,26,37,37,37,59,64,74,86,92,97,106,109,115,151,212,213,214,221,226,240,254,261,263,275,312,328,337,351,353,355,362,393,396,412,427,427,439,441,444,453,459,460,468,476,490,496,500,514,529,532,540,540,542,544,553,559,574,574,580,630,635,638,648,660,665,673,678,690,692,707,732,745,751,773,774,778,779,790,791,815,816,822,828,852,856,860,862,867,904,908,928,937,942,970,972,974,976,989};
	// BiTree tt = createTwithPreIn(pre, in, 0, 99, 0, 99);
	// preOrder(tt);
	// postOrderNoRecurve(t);

// question3
	initUFSets();
	srand(time(NULL));
	for (int i = 0; i < 100; ++i)
	{
		printf("%d ", rand() % 100);
		Union(rand() % 100, rand() % 100);
	}

	for (int i = 0; i < 100; ++i)
	{
		printf("find(%d) = %d\n", i, Find(i));
	}

	return 0;
}
示例#26
0
int main()
{
Node* root=NULL;
//Min(root);
//Max(root);
insert(root,15);
insert(root,13);
insert(root,24);
insert(root,24);
insert(root,100);
insert(root,240);
Search(root,24);
Search(root,15);
Search(root,100);
Search(root,240);
std::cout<<"MINIMUM :"<<Min(root)<<std::endl;
std::cout<<"MAXIMUM :"<<Max(root)<<std::endl;
std::cout<<"HEIGHT :"<<Height(root)<<std::endl;

levelOrder(root);
std::cout<<std::endl;
preOrder(root);
std::cout<<std::endl;
inOrder(root);
std::cout<<std::endl;
postOrder(root);
std::cout<<std::endl;
std::vector<int> v;
isBst(root, v);

for(const int& a:v)
std::cout<<a<<" ";
std::cout<<std::endl;


return 5;
}
vector<vector<int>> levelOrderBottom(TreeNode* root) {
    int d = depth(root);
    vector<vector<int>> ans(d,vector<int> {});
    levelOrder(ans,root,d-1);
    return ans;
}
示例#28
0
	vector<vector<int>> levelOrder(TreeNode* root) {
		VVI result;
		levelOrder(root, 0, result);
		return result;
	}
示例#29
0
文件: tree.cpp 项目: cliftbar/Comp-15
void BST::levelOrder()
{
	levelOrder(root);		// does it need a helper?  No
}
void BST::levelOrder()
{
	levelOrder(root);
}