为了账号安全,请及时绑定邮箱和手机立即绑定
  • 二叉树的顺序存储(数组存储): 索引为i的结点的左孩子索引为2*i+1,右孩子结点为2*i+2
    查看全部
  • #include<stdlib.h> #include"Tree.h" #include<iostream> using namespace std; /******************************************************************** 【数据结构探险---树篇】 ***************************************************/ int main(void) { int root=3; Tree *pTree=new Tree(); Node *node1= new Node(); node1->index=1; node1->data=5; Node *node2= new Node(); node2->index=2; node2->data=8; Node *node3= new Node(); node3->index=3; node3->data=2; Node *node4= new Node(); node4->index=4; node4->data=6; Node *node5= new Node(); node5->index=5; node5->data=9; Node *node6= new Node(); node6->index=6; node6->data=7; pTree->AddNode(0,0,node1); pTree->AddNode(0,1,node2); pTree->AddNode(1,0,node3); pTree->AddNode(1,1,node4); pTree->AddNode(2,0,node5); pTree->AddNode(2,1,node6); cout<<"前序遍历"<<endl; pTree->PreorderTravers(); cout<<"中序遍历"<<endl; pTree->InorderTravers(); cout<<"后序遍历"<<endl; pTree->PostorderTravers(); delete pTree; pTree=NULL; system("pause"); return 0; }
    查看全部
  • #include"stdlib.h" #include "Node.h" Node::Node() { index=0; data=0; pLchild=NULL; pRchild=NULL; pParent=NULL; } Node *Node::SearchNode(int nodeindex) { if(this->index==nodeindex) { return this; } if(this->pLchild!=NULL) { if(this->pLchild->index==nodeindex) { return this->pLchild; } if(this->pRchild!=NULL) { if(this->pRchild->index==nodeindex) { return this->pRchild; } return NULL; } }
    查看全部
  • #include<stdlib.h> #include"Tree.h" #include<iostream> using namespace std; /******************************************************************** 【数据结构探险---树篇】 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 PreorderTravers();//前序遍历 void InorderTravers(); //中序遍历 void PostorderTravers();//后序遍历 -------------------------------------------------------------------- 二叉树--链表实现 (0) 左孩子索引=父节点索引*2+1 5(1) 8(2) 右孩子索引=父节点索引*2+2 2(3) 6(4) 9(5) 7(6) 前序遍历:根左右0134256 中序遍历:左根右3140526 后序遍历:左右根 3415620 **********************************************************************/ int main(void) { int root=3; Tree *pTree=new Tree(10,&root); delete pTree; pTree=NULL; system("pause"); return 0; }
    查看全部
  • #include<stdlib.h> #include"Tree.h" #include<iostream> using namespace std; /******************************************************************** /* 数组---树 Tree【】=3 5 8 2 6 9 7 3(0) 左孩子小标=父节点下标*2+1 5(1) 8(2) 右孩子小标=父节点下标*2+2 2(3) 6(4) 9(5) 7(6) **********************************************************************/ 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; int node5=9; int node6=7; pTree->AddNode(1,0,&node3); pTree->AddNode(1,1,&node4); pTree->AddNode(2,0,&node5); pTree->AddNode(2,1,&node6); int temp; pTree->DeleteNode(6,&temp); cout<<"node="<<temp<<endl; pTree->TreeTravers(); cout<<endl<<"node="<<*pTree->SearchNode(2)<<endl; delete pTree; pTree=NULL; system("pause"); return 0; }
    查看全部
  • #include"Tree.h" #include<iostream> using namespace std; Tree::Tree(int size) { m_iSize=size; m_pTree=new int[size]; for(int i=0;i<m_iSize;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 || m_pTree[nodeindex]==0) { return false; } switch(direction) { case 0: if( nodeindex*2+1>=m_iSize || m_pTree[nodeindex*2+1]!=0) { return false; } m_pTree[nodeindex*2+1]=*pNode; break; case 1: if( nodeindex*2+2>=m_iSize || m_pTree[nodeindex*2+2]!=0) { return false; } m_pTree[nodeindex*2+2]=*pNode; break; } return true; } bool Tree::DeleteNode(int nodeindex,int * pNode) { if(nodeindex<0 || nodeindex>=m_iSize || m_pTree[nodeindex]==0) {
    查看全部
  • 子类继承了父类,并且重写了父类的方法,则调用父类的方法
    查看全部
  • 用数组来表示结点 左结点:父节点下标*2+1; 右结点:父节点下标*2+2;
    查看全部
  • 结点深度和结点所在的层是统一的,在第几次,结点的深度就是几 树的深度,是指当前这棵树当中,结点所具有的最大深度 多棵树放在一起就构成森林 二叉树:所有结点的度,够小于等于2 前序遍历、中序遍历、后序遍历是相对于根节点说的 前序遍历:先访问根,再访问左右结点(根第一位访问) 中序遍历:先访问左结点,再访问根,然后右结点(根第二位访问) 后序遍历:先访问左结点,再访问右结点,最后访问根节点(根第三位访问)
    查看全部
  • 树是结点的有限集合 树顶端的结点,叫做根节点。双亲是一个结点,不是两个结点 度,就是当前这个结点它的直接的孩子 叶子,终端结点就是叶子,即为没有孩子的结点 根,相对于叶子来说的,就是非终端结点 有序树和无序树,它们是相对的概念,如果E和F不能够换顺序,就是有序树,如果可以换,又不影响逻辑的话,就是无序树 祖先:当前指定结点一直向上的到总的根结点所路过的所有结点
    查看全部
  • 想建立什么树,必须是已经有个大概思想,甚至整体内容的。根据某些条件添加
    查看全部
  • 没有跟节点,就尴尬了,因为不能往上插啊。。
    查看全部
  • 祖先,子孙
    查看全部
  • 有序树和无序树
    查看全部
  • 叶子,跟
    查看全部

举报

0/150
提交
取消
课程须知
应该熟练掌握C++相关语法,重点掌握数组、结构体及递归函数,需要熟悉线性表和链表相关内容
老师告诉你能学到什么?
通过课程的学习,你将掌握树的相关概念,数组二叉树,链表二叉树及二叉树递归实现的前序遍历、中序遍历和后序遍历

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!