算法学习-树的基本操作

typedef struct tagSTreeNode
{
	int value;
	tagSTreeNode* pLeft;
	tagSTreeNode* pRight;

	tagSTreeNode(int v) : value(v), pLeft(NULL), pRight(NULL){}
}STreeNode;

typedef void (*VISIT)(int value);  // 定义一个

class CBinaryTree
{
private:
	STreeNode* m_pRoot;

private:
	void Destory(STreeNode* pRoot);
	bool _Insert(STreeNode*& pRoot, int value);                  // 递归
	bool _Insert2(int value);                                    // 非递归
	void _PreOrder(STreeNode* pRoot, VISIT Visit) const;         // 递归
	void _PreOrder2(VISIT Visit) const;                          // 非递归
	void _InOrder(STreeNode* pRoot, VISIT Visit) const;          // 递归
	void _InOrder2(VISIT Visit) const;                           // 非递归
	void _InOrder3(VISIT Visit) const;                           // 非递归
	void _PostOrder(STreeNode* pParent, VISIT Visit) const;		 // 递归
	void _PostOrder2(VISIT Visit) const;                         // 非递归
	void DeleteChildless(STreeNode* pParent, STreeNode* pNode);  // pNode无子
	void DeleteSingleSon(STreeNode* pParent, STreeNode* pNode);  // pNode是pParent唯一子节点
public:
	CBinaryTree();
	~CBinaryTree();
	bool Insert(int value);
	bool Delete(int value);
	STreeNode* Find(int value) const;
	void PreOrder(VISIT Visit) const;
	void InOrder(VISIT Visit) const;
	void PostOrder(VISIT Visit) const;
};
后面博客里面会分别介绍每一个方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值