課程
/后端開發
/C++
/數據結構探險之樹篇
老師能上傳一下你的源代碼嗎?
2019-08-15
源自:數據結構探險之樹篇 3-2
正在回答
#include <iostream>
#include "Tree.h"
using namespace std;
Tree::Tree(int size)
{
? ? m_iSize=size;
? ? m_pTree=new int[size];
? ? for(int i=0; i<size; i++)
? ? {
? ? ? ? m_pTree[i]=0;
? ? }
}
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 &m_pTree[nodeIndex];
bool Tree::AddNode(int nodeIndex,int direction,int *pNode)
? ? ? ? return false;
? ? if(direction==0)
? ? ? ? if(nodeIndex*2+1<0||nodeIndex*2+1>=m_iSize)
? ? ? ? {
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? if(m_pTree[nodeIndex*2+1]!=0)
? ? ? ? m_pTree[nodeIndex*2+1]=*pNode;
? ? if(direction==1)
? ? ? ? if(nodeIndex*2+2<0||nodeIndex*2+2>=m_iSize)
? ? ? ? if(m_pTree[nodeIndex*2+2]!=0)
? ? ? ? m_pTree[nodeIndex*2+2]=*pNode;
? ? return true;
bool Tree::DeleteNode(int nodeIndex,int *pNode)
? ? *pNode=m_pTree[nodeIndex];
? ? m_pTree[nodeIndex]=0;
void Tree::TreeTraverse()
? ? for(int i=0;i<m_iSize;i++)
? ? ? ? cout<<m_pTree[i]<<" ";
#ifndef TREE_H
#define TREE_H
#ifdef __cplusplus
class Tree
public:
? ? Tree(int size);
? ? ~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_H
舉報
樹,將為你開啟更精彩的數據結構大門,了解更多概念
2 回答二叉樹源代碼有嗎?
3 回答老師代碼可以實現所有二叉樹
2 回答能不能下載視頻
1 回答這是遞歸調用函數,請問它一直遞歸,會返還上一層嗎
3 回答能不能舉個查找一個節點的例子?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-09-05
#include <iostream>
#include "Tree.h"
using namespace std;
Tree::Tree(int size)
{
? ? m_iSize=size;
? ? m_pTree=new int[size];
? ? for(int i=0; i<size; i++)
? ? {
? ? ? ? m_pTree[i]=0;
? ? }
}
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<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;
? ? return true;
}
void Tree::TreeTraverse()
{
? ? for(int i=0;i<m_iSize;i++)
? ? {
? ? ? ? cout<<m_pTree[i]<<" ";
? ? }
}
2019-09-05
#ifndef TREE_H
#define TREE_H
#ifdef __cplusplus
class Tree
{
public:
? ? Tree(int size);
? ? ~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_H
#endif // TREE_H