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

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

關于數據結構中的樹,james老師的授課內容

我打印出來的是 3 5 8 2 6 9 0 0 0 0 120,后面有個120是怎么回事啊

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

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;//記錄數組的大小?
};

Tree::Tree(int?size,int?*pRoot)
{
	m_iSize=size;?
	m_pTree?=?new?int[size];//申請內存?
	for(int?i;i<size;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)
	{
		return?NULL;
	}
	return?&m_pTree[nodeIndex];
}

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>=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>=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;
	return?true;
}

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

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();
	
	int?*p=pTree->SearchNode(2);
	cout<<endl;
	cout<<"?node?="<<*p<<endl;
	
	delete?pTree;
	
	
	system("pause");
	return?0;
}


正在回答

1 回答

你的代碼在遍歷那里有錯啊,for(int?i=0;i<=m_iSize;i++)這里去掉等于號for(int?i=0;i<m_iSize;i++),還有構造函數那里for(int?i;i<size;i++)的i要初始化for(int?i=0;i<size;i++)。這樣就好了

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

舉報

0/150
提交
取消

關于數據結構中的樹,james老師的授課內容

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

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

幫助反饋 APP下載

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

公眾號

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