コード例 #1
0
ファイル: BinaryTree.cpp プロジェクト: madhok/Craftsmanship
Node* BinaryTree::FindCommonAncestorBSTbetter(Node* root, Node* node1, Node* node2)
{
    int h1 = GetTreeHeight(node1);
    int h2 = GetTreeHeight(node2);

    int diffheight;
    if(h1 > h2)
        diffheight = h1 - h2;
    else
    {
        diffheight = h2 - h1;
        swap(node1, node2);
    }
    
    for(int i =0; i< dh; i++)
        node1 = node1->parent;
    while(node2)
    {
        if(node1->val == node2->val)
            return node1;
        node1 = node1->parent;
        node2 = node2->parent;
    }   
    return NULL;
}
コード例 #2
0
ファイル: BinaryTree.cpp プロジェクト: madhok/Craftsmanship
int BinaryTree::GetTreeHeight(Node *CurrentNode)
{
    if(CurrentNode == NULL)
    {
        return 0;
    }
    return 1 + max(GetTreeHeight(CurrentNode->left),GetTreeHeight(CurrentNode->right));
}
コード例 #3
0
ファイル: BinaryTree.cpp プロジェクト: madhok/Craftsmanship
void BinaryTree::ReversePrinting()
{
    int height = GetTreeHeight(root);
    
    for(int level = height; level > 0; level--)
    {
     levelPrint(root, level);
        cout << endl;
    }    
}
コード例 #4
0
ファイル: BinaryTree.cpp プロジェクト: madhok/Craftsmanship
void BinaryTree::LevelPrinting()
{
    int height = GetTreeHeight(root);
    
    for(int level = 1; level <= height; level++)
    {
        levelPrint(root, level);
        cout << endl;
    }
    
}
コード例 #5
0
ファイル: Tree.cpp プロジェクト: samyak3/Algorithms
int main()
{
	#if 1
	AddNode(&pRoot,4);
	AddNode(&pRoot,6);
	AddNode(&pRoot,2);
	AddNode(&pRoot,3);
	AddNode(&pRoot,5);
	AddNode(&pRoot,7);
	AddNode(&pRoot,1);
	
	//SubTree

	pRootSub = getbtNode(2);
	pRootSub->left = getbtNode(1);
	pRootSub->right = getbtNode(3);//true subtree case
	//pRootSub->right = getbtNode(4);//fasle subtree case
	#else//for Sum Tree 
	pRoot = getbtNode(30);
	pRoot->left = getbtNode(10);
	pRoot->right = getbtNode(5);
	pRoot->left->left = getbtNode(6);
	pRoot->left->right = getbtNode(4);
	pRoot->right->right = getbtNode(3);
	pRoot->right->left = getbtNode(2);
		
	#endif
	
	cout<<endl<<"##########################################################################################################"<<endl;
	
	cout<<"Inorder Traversal ::"<<endl;
	Inorder(pRoot);
	cout<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	
	cout<<"Preorder Traversal ::"<<endl;
	
	Preorder(pRoot);
	cout<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	
	cout<<"Postorder Traversal ::"<<endl;
	Postorder(pRoot);
	cout<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	cout<<"Level Order Traversal ::"<<endl;
	LOrder(pRoot);
	cout<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	cout<<"Size of the Tree ::"<<endl;
	cout<<GetTreeSize(pRoot);
	cout<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	cout<<"Height of the Tree ::"<<endl;
	cout<<GetTreeHeight(pRoot);
	cout<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	#if 0
	DeleteTree(&pRoot);
	
	AddNode(&pRoot,1);
	
	cout<<"Inorder Traversal after Deletion::"<<endl;
	Inorder(pRoot);
	cout<<endl;
	#endif
		
	MirrorTree(pRoot);	
	cout<<"Inorder Traversal after MirrorTree operation::"<<endl;
	Inorder(pRoot);
	cout<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	
	MirrorTree(pRoot);
	cout<<"Inorder Traversal after MirrorTree operation for second time::"<<endl;
	Inorder(pRoot);
	cout<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	cout<<"Max Element of the Tree ::"<<endl;
	cout<<MaxTreeElement(pRoot);
	cout<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	
	int path[7];
	cout<<"Root To Leaf Paths ::"<<endl;
	RootToLeafPath(pRoot,path,0);
	cout<<endl<<"##########################################################################################################"<<endl;
	cout<<"Number of Leaf Nodes::"<<NumberOfLeafNodes(pRoot)<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	
	cout<<"Ancestors of 7 are ::"<<endl;
	GetAncestors(pRoot,7);
	cout<<endl;

	cout<<endl<<"##########################################################################################################"<<endl;
	
	cout<<"CheckSumTree ::"<<IsSumTree(pRoot)<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	
	cout<<endl<<"Lowest Common Ancestor of 1 and 3 ::"<<LCA(pRoot,1,3)->data<<endl;
	cout<<endl<<"Lowest Common Ancestor of 1 and 7 ::"<<LCA(pRoot,1,7)->data<<endl;
	cout<<endl<<"Lowest Common Ancestor of 4 and 6 ::"<<LCA(pRoot,4,6)->data<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	cout<<endl<<"Tree has Path Sum 9 ::"<<hasPathSum(pRoot,9)<<endl;
	cout<<endl<<"Tree has Path Sum 100 ::"<<hasPathSum(pRoot,100)<<endl;
	cout<<endl<<"Tree has Path Sum 15 ::"<<hasPathSum(pRoot,15)<<endl;
	cout<<endl<<"##########################################################################################################"<<endl;
	
	cout<<endl<<"Subtree ::"<<IsSubTree(pRoot,pRootSub)<<endl;
	
	cout<<endl<<"##########################################################################################################"<<endl;
	return 0;
}