![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树那些事儿
Ant_ony
来自深圳大学计算机与软件学院
展开
-
二叉树层序遍历(BFS)
二叉树的层序遍历是另一种遍历二叉树的方式,顾名思义,就是按照一层一层的顺序遍历二叉树。题目描述(来源:leetcode)思路层序遍历,我们需要按照一层一层的方式搜索二叉树并且将搜索到的节点加入结果。我们假设已经得到了某一层的所有节点,并且这一层的节点已经按照从左到右的顺序储存在了我们维护的一个队列(queue) 中,假设当前层数有节点n个 (n = queue.size()) ,则我们需要遍历队列中前n个节点,将当前节点的左节点和右节点插入队尾,并且将当前节点加入结果(res)..原创 2021-10-04 11:06:52 · 356 阅读 · 0 评论 -
二叉树的后序遍历(栈迭代)
本文旨在维护一个显式的栈,以将递归方法中维护的栈呈现出来和前序遍历与中序遍历不同的是,进行后序遍历时,我们需要跳过根节点,这也是后序遍历的一个难点具体来说,在左节点访问完并且返回上一个节点的时候,我们并不直接把这个节点加入答案集,而是判断该节点是否可以去往右边的节点,并且在去往右边节点之后保持“先左后右”的原则//二叉树的后序遍历(迭代)vector<int> (TreeNode *root ) { vector<int> res ; if(root ==..原创 2021-09-29 22:04:18 · 571 阅读 · 0 评论 -
二叉树中序遍历
如果你已经了解过二叉树的前序遍历,那么二叉树的中序遍历对你来说实在是太简单了,如果你不了解,你可以先看一下这篇文章 @二叉树的前序遍历。对于二叉树的中序遍历,无非就是把遍历顺序改成左子树—根节点—右子树同样的,这篇文章提供了递归和栈模拟两种方法一、递归递归好像真的没啥好说的 QAQ//assume that we have a tree...void inOrderTravel(TreeNode *node, vector<int> &res) {//res...原创 2021-09-27 22:10:42 · 97 阅读 · 0 评论 -
二叉树前序遍历详解
二叉树的遍历是数据结构中非常基础的内容了,今天这一篇文章我们来详细了解一下二叉树的前序遍历,二叉树的前序遍历顺序是根节点-左子树-右子树,本文对递归和栈模拟的方法都有实现一、递归方法递归方法可以说是很简了,我们秉承先去往左节点再去往右节点的原则就好了// assume that we have TreeNode, and res is to store the answer void preorder(TreeNode *root, vector<int&.原创 2021-09-27 21:42:37 · 1404 阅读 · 0 评论