⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 binarytreenode.h

📁 关于binary tree的算法集合 涵盖了所有的binary tree算法 是学习数据结构不可多得的好材料
💻 H
字号:
// BinaryTreeNode.h: interface for the BinaryTreeNode class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BINARYTREENODE_H__65C73C3B_E763_40D9_8460_F5703119C756__INCLUDED_)
#define AFX_BINARYTREENODE_H__65C73C3B_E763_40D9_8460_F5703119C756__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

template <class T> class BinaryTree;
template <class T> class BinarySearchTree;

template <class T>
class BinaryTreeNode  
{
friend class BinaryTree<T>;
friend class BinarySearchTree<T>;
private:
	T  element;					               			//二叉树结点数据域
	BinaryTreeNode<T>*  left; 							//二叉树结点指向左子树的指针
	BinaryTreeNode<T>*  right; 							//二叉树结点指向左子树的指针

public:
	BinaryTreeNode();
	BinaryTreeNode(const T& ele);						//给定数据的构造函数
	BinaryTreeNode(const T& ele,BinaryTreeNode* l, BinaryTreeNode* r);//给定数据的左右指针的构造函数
	T  value() const;									//返回当前结点的数据
	BinaryTreeNode<T>& operator= (const BinaryTreeNode<T>& Node)
	{this=Node;};										//重载赋值操作符
	BinaryTreeNode<T>*  leftchild() const;				//返回当前结点指向左子树的指针
	BinaryTreeNode<T>*  rightchild() const;				//返回当前结点指向右子树的指针
    void  setLeftchild(BinaryTreeNode<T>*);				//设置当前结点的左子树
    void  setRightchild(BinaryTreeNode<T>*);			//设置当前结点的右子树

	void  setValue(const T& val);						//设置当前结点的数据域
	bool  isLeaf() const;								//判定当前结点是否为叶结点,若是返回true
};

  //***************************************************************************//
 //**********************Class BinaryTreeNode Implementation******************//
//***************************************************************************//

template<class T>
BinaryTreeNode<T>::BinaryTreeNode()
{
	left=right=NULL;
}

template<class T>
BinaryTreeNode<T>::BinaryTreeNode(const T& ele)	//给定数据的构造函数
{
	element=ele;
	left=right=NULL;
}

template<class T>
BinaryTreeNode<T>::BinaryTreeNode(const T& ele,BinaryTreeNode* l, BinaryTreeNode* r)
//给定数据的左右指针的构造函数
{
	element=ele;
	left=l;
	right=r;
}

template<class T>
T  BinaryTreeNode<T>::value() const
{
	return element; 
}	

template<class T>
BinaryTreeNode<T>*  BinaryTreeNode<T>::leftchild() const
{
	return left;
}												//返回当前结点指向左子树的指针

template<class T>
BinaryTreeNode<T>*  BinaryTreeNode<T>::rightchild() const
{
	return right;								//返回当前结点指向右子树的指针
}			

template<class T>
void  BinaryTreeNode<T>::setLeftchild(BinaryTreeNode<T>* subroot)//设置当前结点的左子树
{
	left=subroot;
}

template<class T>
void  BinaryTreeNode<T>::setRightchild(BinaryTreeNode<T>* subroot)//设置当前结点的右子树
{
	right=subroot;
}

template<class T>
void  BinaryTreeNode<T>::setValue(const T& val)	//设置当前结点的数据域
{
	element = val; 
} 									

template<class T>
bool  BinaryTreeNode<T>::isLeaf() const			//判定当前结点是否为叶结点,若是返回true
{
	return (left == NULL) && (right == NULL); 
}


#endif // !defined(AFX_BINARYTREENODE_H__65C73C3B_E763_40D9_8460_F5703119C756__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -