标签:直接 int 数据结构 后序 one nbsp 中序遍历 struct 整型
思维导图
算法小结
1.遍历算法
①先序遍历(中序遍历、后序遍历与之类似)
1 void PreOrderTraverse(BiTree T) 2 { //递归算法 3 if(T)//此时树非空 若树空则直接结束 4 { 5 cout << T -> data; //访问根结点 6 PreOrderTraverse(T->lchild); //遍历左子树 7 PreOrderTraverse(T->rchild); //遍历右子树 8 } 9 }
②层次遍历(利用队列先进先出的特点)
1 typedef struct biTNode 2 { 3 TElemType data; 4 struct biTNode *lchild, *rchild;//左右孩子指针 5 }BiTNode, *BiTree; //二叉树链表 6 7 void fun(BiTree T) 8 { //层次遍历 9 queue<BiTNode *> q; 10 q.push(T);//根结点入队 11 BiTNode *p; 12 while (!q.empty()) 13 { //q非空则继续访问队列 14 p = q.front(); //取队头元素 15 q.pop(); 16 if (p!=NULL) 17 { 18 cout << p->data; 19 q.push(p->lchild);//左孩子入队 20 q.push(p->rchild); //右孩子入队 21 } 22 } 23 }
2.寻找根结点(适用于题目给出孩子结点来创建)
①在定义树的时候打包根结点,方便后续调用;
②利用check数组,将其初始化为false,后续创建树的过程中,将孩子结点的编号作为check数组下标,若出现则变为true,以此找出根结点。
其他知识点小结
1.定义数组
1 //第一种:在堆申请空间,推荐第一种写法 2 int n; 3 cin >> n; 4 int *a = new int [n]; 5 6 //第二种:此时n的值可能超过栈空间的大小,c语法正确,c++不支持 7 int n; 8 cin >> n; 9 int a[n];
2.动态分配数组
1 int *data;//定义指向data整型数组的指针 2 int n; 3 cin >> n; 4 data = new int[n];//使用new来申请空间 动态分配 避免浪费 5 delete[] data;//释放空间
标签:直接 int 数据结构 后序 one nbsp 中序遍历 struct 整型
原文地址:https://www.cnblogs.com/Function-F/p/13020727.html