[ create a new paste ] login | about

Link: http://codepad.org/Zs2qPHZx    [ raw code | output | fork ]

C++, pasted on Sep 16:
#include <iostream>
using namespace std;

class BinaryTreeNode
{

private:

	unsigned int value;
	BinaryTreeNode* leftNode;
	BinaryTreeNode* rightNode;


public:
	BinaryTreeNode(unsigned int value) : leftNode(NULL), rightNode(NULL)
	{
		this->value = value;
	};

	~BinaryTreeNode()
	{
		cout << "delete node (" << value << ")" << endl;

		if(leftNode != NULL)
		{
			delete leftNode;
			leftNode = NULL;
		}

		if(rightNode != NULL)
		{
			delete rightNode;
			rightNode = NULL;
		}

	};

	unsigned int getValue()
	{
		return value;
	}

	BinaryTreeNode* getLeftNode()
	{
		return leftNode;
	};

	BinaryTreeNode* getRightNode()
	{
		return rightNode;
	};

	
};



class BinaryTree
{

	BinaryTreeNode* rootNode;


public:
	BinaryTree() : rootNode(NULL)
	{

	};
	~BinaryTree()
	{
		if(rootNode != NULL)
		{
			delete rootNode;
			rootNode = NULL;
		}
	};

	void addNode(unsigned int value)
	{
		
		addNode(value, rootNode);

	};

	void addNode(unsigned int value, BinaryTreeNode* rootNode)
	{
		
		if(rootNode == NULL)
		{
			rootNode = new BinaryTreeNode(value);
			cout << "add node ("<< value << ")" << endl;
		}
		else
		{

			if(value < rootNode->getValue())
			{
				addNode(value, rootNode->getLeftNode());
			}
			else if(value > rootNode->getValue())
			{
				addNode(value, rootNode->getRightNode());
			}
			else
			{
				cout << "thers is node with "<< value << " value already" << endl;
			}
		}
	};


	void searchNode(unsigned int value)
	{
		searchNode(value, rootNode);

	};

	void searchNode(unsigned int value, BinaryTreeNode* rootNode)
	{
		
		if(rootNode == NULL)
		{
			cout << "no match" << endl;
		}
		else
		{

			if(value < rootNode->getValue())
			{
				searchNode(value, rootNode->getLeftNode());
			}
			else if(value > rootNode->getValue())
			{
				searchNode(value, rootNode->getRightNode());
			}
			else
			{
				cout << "value found! left : " << rootNode->getLeftNode()->getValue() << ", right : " << rootNode->getRightNode()->getValue()  << endl;
			}
		}
	};


	
};




int main()
{

	BinaryTree tree;
	tree.addNode(100);
	tree.addNode(10);
	tree.addNode(10);
	tree.addNode(15);
	tree.addNode(150);
	tree.addNode(180);
	tree.addNode(140);
	tree.searchNode(100);
	tree.searchNode(10);

	return 0;
}


Output:
1
2
3
4
5
6
7
8
9
add node (100)
add node (10)
add node (10)
add node (15)
add node (150)
add node (180)
add node (140)
no match
no match


Create a new paste based on this one


Comments: