随机插入到左或右二叉树
Random insertion to left or right in binary tree
我有一个随机插入节点到二叉树的问题,我知道二叉树的基本实现,但我从来没有在程序中使用过typedef enum,事实上这是我第一次不得不使用它。谁能指出我在正确的方向,我将如何实现typedef语句到我的程序,以便一个新的节点将在右或左子树随机创建?
这是我必须使用的typedef语句,但不知道如何使用。
typedef enum { left_side, right_side } SIDE;
SIDE rnd ( ) { return rand ( ) % 2 ? right_side : left_side; }
这是我的二叉树类和插入函数
template < class T > class binTree {
public:
binTree ( ); // default constructor
unsigned height ( ) const; // returns height of tree
virtual void insert ( const T& ); // inserts a node in tree
void inorder ( void ( * ) ( const T& ) ); // inorder traversal of tree
protected:
Node < T >* root; // root of tree
private:
unsigned height ( Node < T >* ) const; // private version of height ( )
void insert ( Node < T >*&, const T& ); // private version of insert ( )
void inorder ( Node < T >*, void ( * ) ( const T& ) ); // private version of inorder ( )
};
// inserts a node in shortest subtree
template <class T>
void binTree <T>::insert( const T& v )
{ //thi is how i am used to inserting into binary trees
insert( root, v ); // call recursive
}
//private version of insert
template <class T>
void binTree <T>::insert( Node <T>* & p, const T& v )
{
if( p == NULL )
{
Node <T> * newNode;
newNode = new Node <T>( v ); // new node with new value
p = newNode; // set ptr to new node
}
else
{
int lHeight = height( p->left );
int rHeight = height( p->right );
if( lHeight <= rHeight )
{
insert( p->left, v );
}
else
{
insert( p->right, v );
}
}
}
这样写
template <class T>
void binTree<T>::insert( Node<T>*& p, const T& v){
if (p == NULL)
root = new Node<T> (v);
else{
SIDE s = rnd();
if(s == left_side)
insert(p->left, v);
else
insert(p->right,v);
}
}
相关文章:
- 将二叉树的节点插入链表 (C++)
- 二叉树级别顺序插入 c++
- 如何在使用 ItemType 的模板类时将新节点插入二叉树 c++.(我是 c++ 的新手)
- 错误表达式必须是插入函数(二叉树 C++)中的可修改 Ivalue
- 二叉树插入功能不适用于 10 个条目
- C++二叉树插入/高度
- 我的二叉树插入逻辑的缺陷在哪里
- 在二叉树中插入/查找问题
- 二叉树-插入非空树
- 二叉树递归插入方法不起作用
- 无法在二叉树中插入新节点
- 递归插入到二叉树中,按值传递指针
- 使用级别顺序遍历将节点插入二叉树
- 随机二叉树中的插入函数
- 二叉树插入不起作用
- 插入二叉树
- 线程内二叉树的插入或顺序遍历有什么问题
- 在二叉树中插入4或5个数字,但输出中只有3个数字
- 二叉树插入算法
- 随机插入到左或右二叉树