二叉树的DFS/BFS
来源:互联网 发布:cfa淘宝代报名靠谱吗 编辑:程序博客网 时间:2024/05/20 23:40
广度优先遍历
BFS,也就是层次遍历,相当于前序。需要借助一个队列,现将二叉树的根节点入队,然后出队,访问该节点,如果它有左子树,则将左子树根节点入队;如果有右子树,则将右子树根节点入队。然后出队,对出队节点访问,如此反复,直到队列为空。
- void LevelOrder(BiTree root)
- {
- InitQueue(Q); //初始化队列
- BiTree p;
- EnQueue(Q,root); //将根节点入队
- while(!IsEmpty(Q)) //队列不空循环
- {
- DeQueue(Q,p); //访问p所指向节点
- visit(p);
- if(p->lchild != NULL)
- EnQueue(Q,p->lchild); //左子树不空则左子树入队
- if(p->rchild != NULL)
- EnQueue(Q,p->rchild);
- }
- }
深度优先遍历
DFS,遍历了根节点后,就开始遍历左子树,所以右子树肯定最后遍历。我们利用栈的性质,所以先将右子树压栈,然后在对左子树压栈。此时,左子树节点是在top上的,所以可以先去遍历左子树。
- void DepthFirstTravel(Tree *root)
- {
- stack<Tree *> s;
- s.push(root); //根节点入栈
- while(!s.empty())
- {
- root = s.top(); //读取根节点
- cout << root->data << " ";
- s.pop(); //根节点出栈
- if(root->rchild != NULL)
- {
- s.push(root->rchild); //先右
- }
- if(root->lchild != NULL)
- {
- s.push(root->lchild); //再左
- }
- }
- }
==================================
栈空: s.top == -1
栈满: s.top == MaxSize -1
入栈: s.data[++s.top] = x ; //指针先加1,再入栈
出栈: x = s.data[s.top--]; //先出栈,指针再减1
队空:Q.front == Q.rear
队满:(Q.rear+1)%MaxSize == Q.front
队列中元素:(Q.rear - Q.front + Maxsize)%MaxSize
0 0
- 二叉树的DFS/BFS
- 二叉树的DFS和BFS
- 二叉树DFS与BFS的问题整理
- 二叉树类和DFS,BFS
- 用二叉树区分DFS和BFS
- 二叉树中的DFS和BFS
- 二叉树深度优先(DFS)和广度优先(BFS)算法的非递归实现
- 二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)
- 树和图的BFS 和 DFS
- 图的dfs、bfs
- BFS树&DFS树
- 二叉树 深度优先搜索(DFS)、广度优先搜索(BFS)
- 算法学习笔记 二叉树和图遍历—深搜 DFS 与广搜 BFS
- 二叉树 深度优先搜索(DFS)、广度优先搜索(BFS)
- [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS | BFS)
- 1127. ZigZagging on a Tree (30)[二叉树构建-dfs-bfs]
- 算法学习笔记 二叉树和图遍历—深搜 DFS 与广搜 BFS
- 二叉树深度优先搜索(DFS)、广度优先搜索(BFS)
- 杭电oj(java版)——1093 A+B for Input-Output Practice (V)
- Eclipse启动错误:java was started but returned exit code=1 (网上各种坑)
- 使用 C / C++ 产生符合正态分布的随机数
- 【种类并查集】 hdu1829 A bug's Life
- AndroidStudio-R文件突然爆红
- 二叉树的DFS/BFS
- Error:org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection cannot be cast to
- Error: L6218E: Undefined symbol main (referred from_rtentry2.0)
- LinkedTransferQueue 理解
- 杭电oj(java版)——1094
- 【MySQL基础】数据库概述
- leetcode题解-414. Third Maximum Number
- oletools下载安装及rtfobj使用
- NYOJ 2126 Buy souvenirs(01背包+输出方案数)