?? treenode.h
字號(hào):
// TreeNode.h: interface for the TreeNode class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_TREENODE_H__13C52CCB_6E4A_493C_9F1A_AA230FD1F057__INCLUDED_)
#define AFX_TREENODE_H__13C52CCB_6E4A_493C_9F1A_AA230FD1F057__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
template <class T> class Tree;
template<class T>
class TreeNode
{
friend class Tree<T>;
private:
T m_Value; //樹結(jié)點(diǎn)的值
TreeNode<T>* pChild; //左子結(jié)點(diǎn)
TreeNode<T>* pSibling; //右兄弟結(jié)點(diǎn)
public:
TreeNode(); //缺省構(gòu)造函數(shù)
TreeNode(const T&); //拷貝構(gòu)造函數(shù)
~TreeNode(){}; //析構(gòu)函數(shù)
bool isLeaf(); //如果結(jié)點(diǎn)是葉,返回true
T Value(); //返回結(jié)點(diǎn)的值
TreeNode<T>* LeftMostChild(); //返回第一個(gè)左孩子
TreeNode<T>* RightSibling(); //返回右兄弟
void setValue(T&); //設(shè)置結(jié)點(diǎn)的值
void setChild(TreeNode<T>* pointer); //設(shè)置左孩子
void setSibling(TreeNode<T>* pointer);//設(shè)置右兄弟
void InsertFirst(TreeNode<T>* node); //以第一個(gè)孩子的身份插入結(jié)點(diǎn)
void InsertNext(TreeNode<T>* node); //以右兄弟的身份插入結(jié)點(diǎn)
};
template<class T>
TreeNode<T>::TreeNode()
{//缺省構(gòu)造函數(shù)
pChild=NULL;
pSibling=NULL;
}
template<class T>
TreeNode<T>::TreeNode(const T& value)
{//拷貝構(gòu)造函數(shù)
m_Value=value;
pChild=NULL;
pSibling=NULL;
}
template<class T>
T TreeNode<T>::Value()
{//返回結(jié)點(diǎn)的值
return m_Value;
}
template<class T>
bool TreeNode<T>::isLeaf()
{//如果結(jié)點(diǎn)是葉,返回true
if(NULL==pChild)
return true;
return false;
}
template<class T>
TreeNode<T>* TreeNode<T>::LeftMostChild()
{//返回第一個(gè)左孩子
return pChild;
}
template<class T>
TreeNode<T>* TreeNode<T>::RightSibling()
{//返回右兄弟
return pSibling;
}
template<class T>
void TreeNode<T>::setValue(T& value)
{//設(shè)置結(jié)點(diǎn)的值
m_Value=value;
}
template<class T>
void TreeNode<T>::setChild(TreeNode<T>* pointer)
{//設(shè)置左孩子
pChild=pointer;
}
template<class T>
void TreeNode<T>::setSibling(TreeNode<T>* pointer)
{//設(shè)置右兄弟
pSibling=pointer;
}
template<class T>
void TreeNode<T>::InsertFirst(TreeNode<T>* node)
{//以第一個(gè)孩子的身份插入結(jié)點(diǎn)
if(!pChild)
pChild=node;
else
{
node->pSibling=pChild;
pChild=node;
}
}
template<class T>
void TreeNode<T>::InsertNext(TreeNode<T>* node)
{//以右兄弟的身份插入結(jié)點(diǎn)
if(!pSibling)
pSibling=node;
else
{
node->pSibling=pSibling;
pSibling=node;
}
}
#endif // !defined(AFX_TREENODE_H__13C52CCB_6E4A_493C_9F1A_AA230FD1F057__INCLUDED_)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -