代码难点    第一点:先将初始化过得数组,变成符合规范的二叉树(规范:双亲结点大于左子树,小于右子树)的过程;    第二点:存储结点的队列,只要输出一个结点,就将它的左右子树按照顺序存储的队列中,这样,当遍历完这一层的右半边时,可以回到下一行的最左边的结点;

代码难点解释    第一点        A>首先建立根结点,赋给BitTree *bt;        B>之后使用for循...
点击进入阅读全文

树与二叉树

什么是树呢?就是一个节点上会有很多分叉的数据结构。一般的,对于一棵树,我们需要的结构体为一个数据块和几个指针块,这就相当于很多个链表交织在了一起,实际上,链表也可以算是一种特殊的树,而我要讲的,也是一种特殊的树——二叉树。对于树的各个节点,都有两个属性,称为度(degree),他的意思就是这个节点所拥有的子节点的数量。还有一个属性,称为深度(depth),指节点到根的距离。什么是二叉树呢?顾名思义,就是度为二的树,它长这样...点击进入阅读全文

二叉树的镜像就是二叉树对称的二叉树,比如原二叉树镜像之后这里写图片描述就是交换每一非叶子节点的左子树指针和右子树指针1:递归,如果节点为空,返回,否则交换左右孩子指针;递归镜像节点的左子树,右子树;2:非递归:交换每一非叶子节点的左子树指针和右子树指针 ,利用队列,根节点先入队;交换队列第一个节点的左右孩子之针,然后把第一个节点的左右孩子入队,然后pop();直到队列为空;即遍历完毕;
递归写法
// Recursioclass Solution ...
点击进入阅读全文

逆波兰表达式又叫后缀表达式,中学时候学的那种表达式叫中缀表达式。例如,5×(6+3)÷3-1      ,  3×(4÷(2+1)×2)-例子中的这两个式子,就是中缀表达式。下面这两个就是后缀表达式563+×3÷1-      ,    3421+÷2××3中缀表达式变后缀表达式方法见到数字直接输出,见到符号按一定规则入栈出栈。规则就是,用当前的符号与栈顶的符号比较优先级,如果当前符号优先...点击进入阅读全文

一般这种题都是出现在选择题里面的,而且元素较少,所以即使我们使用野路子(依次把选项代入测试)也不会花费多少时间。但是,我们总不能一直打游击啊,当遇到敌人主力的时候无能为力,那就坑了。所以这里介绍怎样转游击战为阵地战,从正面硬刚敌人并且取胜的方法。首先,假设入栈顺序是1,2,3,正确的出栈顺序(其中一种)2,3,4,错误的出栈顺序(其中一种)3,1,4,然后,开始准备进攻。我们设置一个中间栈:...点击进入阅读全文

一、问题描述N个人围城一桌(首位相连),约定从1报数,报到数为k的人出局,然后下一位又从1开始报,以此类推。最后留下的人获胜。(有很多类似问题,如猴子选代王等等,解法都一样二、思路分析(1)可将人的顺序简单编号,从1到N;(2)构造一个循环链表,可以解决首位相连的问题,同时如果将人的编号改为人名或者其他比较方便(3)将人的编号插入到结构体的Data域;(4)遍历人的编号,输出参与的人的编号;(5...点击进入阅读全文

一.起源汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。二.抽象为数学问题如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要...点击进入阅读全文

高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6  1  2 7  9  3  4  5 10  8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大...点击进入阅读全文