一.判断一颗二叉树是否为平衡二叉树 题目:输入一颗二叉树的根节点,判断该二叉树是否为平衡二叉树。所谓的平衡二叉树是指以当前结点为根结点的树,左右子树的深度不得超过1。 例如: 解决思路一:按照前序遍历的路线判断。 1.判断以根结点的树是否为二叉平衡树。求出左右子树的高度,判断它们的高度差是否超过了1。 2.递归判断根的左子树是否为平衡二叉树 3.递归判断根的右子树是否为平衡二叉树 注意:空树也是平衡二叉树 代码实现: //二叉树的高度(比较左右子树那个高,高的加1既为二叉树的高度) int BinaryTreeHi…

2018年9月17日 0条评论 16点热度 阅读全文

题目:输入两棵二叉树A和B,判断B是不是A的子结构。 和链表相比,树中的指针更多更复杂,所以需要格外的小心! 实例如下: 判断A树中是否包含B树。具体方法是先遍历A树,看A树中是否有B树的根结点。如果有再看该结点是否含有和B树一样的结构!如果没有特殊的要求,我们一般采用递归的方式实现。 具体实现代码如下: #include <iostream> using namespace std; struct Binarytree { int data; Binarytree *pLeft; Binarytree…

2016年6月7日 0条评论 8点热度 阅读全文

   位运算是把数字用二进制表示之后,对每一位上的0或者1的运算。二进制及其位运算是现代计算机学科的基石,很多底层的技术都离不开位运。    下面主要介绍几种常见的位运算 1、按位与运算符(&) 参加运算的两个数据,按二进制位进行“与”运算。 运算规则:两位同“1”为“1”,否则为0;           即: 0&0=0;   0&1=0;    1&0=0; &…

2016年6月4日 0条评论 2点热度 阅读全文