Hi
First of all what do you call a normal two child tree, is it BTree (Binarytree)?
What should such a tree class include, what functions are commonly needed when using the tree class.
It depends on what this binary tree stores and how you''re going to be using it. Typically, you might want an interating function that performs some operation on each node, a searching algorithm, an insertion and removal algorithm, etc. But I can''t tell you for sure.
Well, think about how a binary tree would be structured...
By its very name, a binary tree would have two leaves/branches at each branch. Therefore your basic structure could have a couple of pointers to it''s ''child'' nodes. Depending on the functionality you want in your tree you could also have pointers back up the tree to parent items, depending on how you want to use the tree.
Then, add the specific data to each node. Personally, I use a pointer to a separate data structure as it makes it easier to swap items when sorting etc.
struct TreeItem
{
void* data; // pointer to data
TreeItem* left; // left child node
TreeItem* right; // right child node
TreeItem* parent; // parent node
};
Your basic tree class would then have a TreeItem at it''s root, and the tree can then be built from there by adding nodes to the left/right pointers.
As for functionality, that really depends on what you are using it for and what data is contained in the tree.
This is a pretty basic example but it should give you an idea...
By its very name, a binary tree would have two leaves/branches at each branch. Therefore your basic structure could have a couple of pointers to it''s ''child'' nodes. Depending on the functionality you want in your tree you could also have pointers back up the tree to parent items, depending on how you want to use the tree.
Then, add the specific data to each node. Personally, I use a pointer to a separate data structure as it makes it easier to swap items when sorting etc.
struct TreeItem
{
void* data; // pointer to data
TreeItem* left; // left child node
TreeItem* right; // right child node
TreeItem* parent; // parent node
};
Your basic tree class would then have a TreeItem at it''s root, and the tree can then be built from there by adding nodes to the left/right pointers.
As for functionality, that really depends on what you are using it for and what data is contained in the tree.
This is a pretty basic example but it should give you an idea...
Should i have functions like
SetRoot //Sets the *root
GoUp //Currect = Current->Parent;
GoRight //Current = Current->RChild;
GoLeft //Current = Current->LChild;
SetRight //Current->RChild = RChild;
SetLeft /Current->LChild = LChild
Or should all thease functions be a part of a iterator for the tree?
SetRoot //Sets the *root
GoUp //Currect = Current->Parent;
GoRight //Current = Current->RChild;
GoLeft //Current = Current->LChild;
SetRight //Current->RChild = RChild;
SetLeft /Current->LChild = LChild
Or should all thease functions be a part of a iterator for the tree?
quote:Original post by Anonymous Poster
struct TreeItem
{
void* data; // pointer to data
TreeItem* left; // left child node
TreeItem* right; // right child node
TreeItem* parent; // parent node
};
If you''re using C++ you should really code thia like this:
template<typename T>class TreeItem{public: T* data; // pointer to data TreeItem<T>* left; // left child node TreeItem<T>* right; // right child node TreeItem<T>* parent; // parent node};
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement