亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這是個什么問題

http://img1.sycdn.imooc.com//5961d6c90001855109040601.jpg

Tree.h

#ifndef?TREE_H
#define?TREE_H

class?Tree
{
public:
	Tree(int?size,int?*pRoot);
	~Tree();
	int?*SearchNode(int?nodeIndex);
	bool?AddNode(int?nodeIndex,?int?direction,?int?*pNode);
	bool?DeleteNode(int?nodeIndex,?int?*pNode);
	void?TreeTraverse();

private:
	int?*m_pTree;
	int?m_iSize;
};

#endif

Tree.cpp

#include<iostream>
#include"Tree.h"
using?namespace?std;

Tree::Tree(int?size,?int?*pRoot)
{
	m_pTree?=?new?int[size];

	m_iSize?=?size;
	for?(int?i?=?0;?i?<?m_iSize;?i++)
	{
		m_pTree[i]?=?0;
	}

	m_pTree[0]?=?*pRoot;

}

Tree::~Tree()
{
	delete[]m_pTree;
	m_pTree?=?NULL;
}

int?*Tree::SearchNode(int?nodeIndex)
{
	if?(nodeIndex?<?0?||?nodeIndex?>=?m_iSize)
		return?NULL;
	if?(m_pTree[nodeIndex]?==?0)?//節點數值為0代表不存在該節點
		return?NULL;
	return?&m_pTree[nodeIndex];
}


/*
	左子節點下標號是父節點下標號*2+1??右子節點是父節點下標號*2+2
*/
bool?Tree::AddNode(int?nodeIndex,?int?direction,?int?*pNode)
{
	if?(nodeIndex?<?0?||?nodeIndex?>=?m_iSize)
		return?false;
	if?(m_pTree[nodeIndex]?==?0)?
		return?false;

	if?(direction?==?0)
	{
		if?(nodeIndex?*?2?+?1?<?0?||?nodeIndex?*?2?+?1?>=?m_iSize)
			return?false;
		if?(m_pTree[nodeIndex?*?2?+?1]?!=?0)?//插入的位置已經有節點
			return?false;
		m_pTree[nodeIndex?*?2?+?1]=*pNode;
	}

	if?(direction?==?1)
	{
		if?(nodeIndex?*?2?+?2?<?0?||?nodeIndex?*?2?+?2?>=?m_iSize)
			return?false;
		if?(m_pTree[nodeIndex?*?2?+?2]?!=?0)?//插入的位置已經有節點
			return?false;
		m_pTree[nodeIndex?*?2?+?2]?=?*pNode;
	}
	return?true;
}


bool?Tree::DeleteNode(int?nodeIndex,?int?*pNode)
{
	if?(nodeIndex?<?0?||?nodeIndex?>=?m_iSize)
		return?false;
	if?(m_pTree[nodeIndex]?==?0)
		return?false;

	*pNode?=?m_pTree[nodeIndex];
	m_pTree[nodeIndex]?=?0;
}

void?Tree::TreeTraverse()
{
	for?(int?i?=?0;?i?<?m_iSize;?i++)
	{
		cout?<<?m_pTree[i]?<<?"?";
	}
}

main.cpp

#include<iostream>
#include"Tree.h"
using?namespace?std;

int?main(void)
{
	int?root?=?3;

	Tree?*pTree?=?new?Tree(10,&root);

	int?node1?=?5;
	int?node2?=?8;
	pTree->AddNode(0,?0,?&node1);
	pTree->AddNode(0,?1,?&node2);

	int?node3?=?2;
	int?node4?=?6;
	pTree->AddNode(1,?0,?&node3);
	pTree->AddNode(1,?1,?&node4);

	int?node5?=?9;
	int?node6?=?7;
	pTree->AddNode(2,?0,?&node5);
	pTree->AddNode(2,?1,?&node6);

	int?node?=?0;
	pTree->DeleteNode(6,?&node);?
	cout?<<"node="<<?node<<endl;

	pTree->TreeTraverse();

	cout?<<?endl;
	int?*p=pTree->SearchNode(2);
	cout?<<?*p;



	delete[]pTree;
	pTree?=?NULL;

	system("pause");
	return?0;
}


正在回答

1 回答

main.cpp中,你定義的pTree是一個指針,不是數組指針,最后你刪除的時候就不用刪除數組噻,delete pTree就好了

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

這是個什么問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號