
二叉树
文章平均质量分 56
南宫小仙僧
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
重建二叉树以及树的遍历
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的头结点。在介绍算法之前,首先讲解一下树的几种遍历方式:1.前序遍历:先访问根节点,再访问左子节点,最后访问右子节点。2.中序遍历:先访问左子节点,再访问根节点原创 2017-05-23 21:19:52 · 375 阅读 · 0 评论 -
树的子结构问题
题目:输入两颗二叉树A和B,判断B是不是A的子结构算法思想很简单:首先在A中找到和B的根节点的值一样的节点R,然后再判断树A中以R为根节点的子树是不是包含和树B一样的结构。bool HasSubTree(BinaryTreeNode* pRoot1,BinaryTreeNode* pRoot2) { bool result=false; if(pRoot1!=NULL && pRoo原创 2017-06-13 10:32:25 · 330 阅读 · 0 评论 -
二叉树的镜像
求一颗树的镜像的过程:我们先前序遍历这棵树的每个节点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有非叶子节点的左右子节点之后,就得到了树的镜像。代码如下:void MirrorRecursively(BinaryTreeNode* pNode) { if(pNode==NULL) { return; } if(pNode->m_pLeft==NUL原创 2017-06-13 10:59:54 · 283 阅读 · 0 评论 -
广度优先遍历二叉树(从上到下遍历二叉树)
问题描述:从上到下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如下图中的二叉树 ,则依次打印出8,6,10,5,7,9,11思路分析:按层打印的顺序决定了应该先打印根节点,所以我们从树的根节点开始分析,为了接下来能够打印值为8的结点的两个子结点,我们应该在遍历到该结点时把值为6和10的两个结点保存到一个容器里,现在容器内就有两个结点了。按照从左到右的打印,我们先取出值为6的结点,打原创 2017-06-15 14:40:57 · 1159 阅读 · 0 评论 -
二叉树问题
题目描述: 给出一个由n个结点组成的二叉树,根结点编号为1,所有结点的原始颜色为白色,现在对某一个结点进行染黑操作,执行操作后,由该结点为根结点的子树所有结点染黑,请问执行操作后有多少个结点变成黑色。保证输入合法,可以构成一颗二叉树,且编号不重复,操作的结点编号在二叉树存在。保证输入顺序是二叉树的先序遍历顺序,除去根结点编号。 输入: 第一行输入n(0 随后n-1行代表除了根结点以原创 2017-09-14 12:51:31 · 1280 阅读 · 0 评论