Binary Treeの実装


今日はアルゴリズム、データ構造の勉強。
BinaryTreeのInsert部分だけ作ってみた

#include <cstddef><br><br>template<class T> class BinaryTree<br>{<br>template <class T> class Element{<br>public:<br>Element()<br>:parent(NULL),child_less(NULL),child_more(NULL)<br>{<br>};<br>~Element(){ <br>delete child_less;<br>delete child_more;<br>};<br><br>Element* parent;<br>Element* child_less;<br>Element* child_more;<br>T  obj;<br>};<br>public:<br>BinaryTree(void)<br>:m_first(NULL)<br>{<br>}<br><br>~BinaryTree(void){<br>delete m_first;<br>};<br><br>int Insert(const T& obj){<br>Element<T> *el = new Element<T>();<br>el->obj = obj;<br><br>if( !m_first ){<br>m_first = el;<br>return 1;<br>}<br><br>return CheckAndInsertObject( m_first , el ); <br>};<br><br>private:<br>Element<T>* m_first;<br><br>int CheckAndInsertObject( Element<T>* target_el, Element<T>* new_el ){<br>if( !target_el ){<br>return 0;<br>}<br><br>if( target_el->obj < new_el->obj ){<br>if( target_el->child_more ){<br>return CheckAndInsertObject( target_el->child_more , new_el );<br>}<br>else{<br>target_el->child_more = new_el;<br>new_el->parent = target_el;<br>return 1;<br>}<br><br>}<br>else if( target_el->obj > new_el->obj ){<br>if( target_el->child_less ){<br>return CheckAndInsertObject( target_el->child_less , new_el );<br>}<br>else{<br>target_el->child_less = new_el;<br>new_el->parent = target_el;<br>return 1;<br>}<br>}<br><br>delete new_el;<br>return 0;<br><br>};<br>};<br><br>

コメント投稿は締め切りました。