Exemplo n.º 1
0
void doubleTree(pnode *root) {
    pnode temp = NULL;
    if (*root == NULL) return;

    doubleTree(&((*root)->left));
    doubleTree(&((*root)->right));
    temp = (*root)->left;
    (*root)->left = createNode((*root)->data);
    (*root)->left->left = temp;
}
Exemplo n.º 2
0
void doubleTree(struct node* node) {
	struct node* oldLeft;
	if (node == NULL)
		return;

	doubleTree(node->left);
	doubleTree(node->right);
	oldLeft = node->left;
	node->left = newNode(node->data);
	node->left->left = oldLeft;
}
Exemplo n.º 3
0
/*
* For each node in a BSTs, create a new duplicate node and
* insert the duplicate node as the left child of the original node
*/
void doubleTree(struct node* node){
   if (NULL == node)
       return;
   else{
       doubleTree(node->left);
       doubleTree(node->right);
       struct node* oldNode;
       oldNode = node->left;
       node->left = newNode(node->data);
       node->left->left = oldNode;
   }
}
Exemplo n.º 4
0
Arquivo: DS.cpp Projeto: pjedson/PX
void doubleTree(node* root){
	if (root == NULL) {
		return;
	}
	else {

		doubleTree(root->left);
		doubleTree(root->right);
		node *tmp = root->left;
		root->left = newNode(root->data);
		root->left->left = tmp;
	}
}
Exemplo n.º 5
0
void doubleTree(struct node* node)
{
	if(node == 0) return;
	else{
		struct node* templ = node->left;
		//struct node* tempr = node->right;

		node->left = NewNode(node->data);
		node->left->left = templ;
		doubleTree(templ);
		doubleTree(node->right);
	}
} 
Exemplo n.º 6
0
void doubleTree(struct node* node)
{
    struct node* oldLeft;

    if (node==NULL) return;

    /* do the subtrees */
    doubleTree(node->left);
    doubleTree(node->right);

    /* duplicate this node to its left */
    oldLeft = node->left;
    node->left = newNode(node->data);
    node->left->left = oldLeft;
}
Exemplo n.º 7
0
void doubleTree(struct node* node) {
    if (!node) return;

    // Create new node, which is a copy of the current node
    struct node* newNode = malloc(sizeof(struct node));
    newNode->data = node->data;
    newNode->left = node->left;
    newNode->right = node->right;

    // Point current node's ->left to newNode;
    node->left = newNode;

    // Recursively call function for both left and right branches
    doubleTree(newNode->left);
    doubleTree(newNode->right);
}
Exemplo n.º 8
0
void doubleTree(node *n)
{
  if(n == NULL)
    return;

  else
    {
      node *t;
      t = n -> left;
      n -> left = (node *)malloc(sizeof(node));
      n -> left -> data = n -> data;
      n -> left -> left  = t;

      doubleTree(t);
      doubleTree(n -> right);
    }
}
void doubleTree(struct node* n) {

if(n != NULL) {
  struct node* temp = n->left;
  n->left = (struct node*)malloc(sizeof(struct node));
  (n->left)->data = n->data;
  (n->left)->left = temp;
  (n->left)->right = NULL;
  if(n->right != NULL) {
    doubleTree(n->right);
  }
  if((n->left)->left != NULL) {
    doubleTree((n->left)->left);
  }
}

}
Exemplo n.º 10
0
/**
 * [doubleTree description]
 * @param node [description]
 */
void doubleTree(struct node* node)
{
  if(node == NULL)
  {
    return;
  }
  else
  {
    doubleTree(node->left);
    doubleTree(node->right);

    struct node* new_node =  NewNode(node->data);
    new_node->left = node->left;
    new_node->right = NULL;
    node->left = new_node;
  }

  return;
}
Exemplo n.º 11
0
int main()
{
  node *root = NULL, *rootb = NULL, *rooth = NULL, *temp;
  int sum = 25, *a, l = 0;
  a = (int *)malloc(sizeof(int));

  root = insert(root, 10);
  root = insert(root, 7);
  root = insert(root, 6);
  root = insert(root, 8);
  root = insert(root, 13);
  root = insert(root, 15);
  root = insert(root, 11);

  printf("Part2: Size: \t%d\n", size(root, 0));
  printf("Part3: Depth: \t%d\n", maxDepth(root));
  printf("Part4: Min: \t%d\n", minValue(root));
  printf("Part5: Post: \t");printPostorder(root);printf("\n");
  printf("Part6: Path Sum: %d %s\n", sum, hasPathSum(root, sum)?"True":"False");
  printf("Part7: Leaf Paths");printPaths(root, a, l);
  printf("\n");
  inorder(root);printf("\n");
  printf("Part8: Mirror: ");mirror(root);inorder(root);printf("\n");

  rootb = insert(rootb, 10);
  rootb = insert(rootb, 7);
  rootb = insert(rootb, 6);
  rootb = insert(rootb, 8);
  rootb = insert(rootb, 13);
  rootb = insert(rootb, 15);
  rootb = insert(rootb, 11);

  printf("Part9: doubleTree: ");doubleTree(rootb);inorder(rootb);printf("\n");
  printf("Part10: sameTree: %s\n", sameTree(root, root)?"True":"False");
  mirror(root);
  printf("Part11: isBST: %s\n", isBST(root)?"True":"False");
  printf("Part12: Tree list: ");
  rooth = treeList(root);
  temp = rooth -> left;
  printf("%d ", rooth -> data);
  while(temp != rooth)
    {
      printf("%d ", temp -> data);
      temp = temp -> left;
    }
  printf("\n");

  return(0);
}
void testDoubleTree() {
struct node* rootNode = insert(NULL,3);
rootNode = insert(rootNode,4);
rootNode = insert(rootNode,5);
rootNode = insert(rootNode,2);
rootNode = insert(rootNode,1);
printf("\n---------------------------------\n"); 
printf("Printing the tree before doubletree() is called \n");
printTree(rootNode);
printf("\n---------------------------------\n"); 
printf("Printing the tree after doubletree() is called \n");
doubleTree(rootNode);
printTree(rootNode);
printf("Printing the tree after doubletree() is called \n");

}