判断二叉树是否平衡、求二叉树的镜像、按行列有序矩阵中快速查找元素是否存在
来源:互联网 发布:时间矩阵图例子 编辑:程序博客网 时间:2024/06/05 20:36
1.判断二叉树是否平衡
//实现思路:从下往上进行判断, 左右子树高度差不超过2 ,但是返回结果是bool 类型, 并且要保存树的高度,因此需要增加一个额外参数
bool isBalance(BNode* pHead, int& height){ if (!pHead) return true; int left = 0, right = 0; if (!isBalance(pHead->pLeft, left))return false; if (!isBalance(pHead->pRight, right))return false; if (abs(left - right) > 1) { return false; } height = max(left, right) + 1; return true;}
2.二叉树的镜像
//求一颗二叉树的镜像//实现思路:也就是返回一颗镜像树,树的左是镜像树的右,同理,右子树。//遍历 时,连接镜像树,传参加入它的根节点void CreateMirror(BNode* pHead, BNode*& pMir){ if (pHead == NULL)return; pMir = new BNode(pHead->data); CreateMirror(pHead->pLeft,pMir->pRight); CreateMirror(pHead->pRight, pMir->pLeft);}
3.一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高
//思路:有序,效率要求尽可能高,二分查找,二维数组//划分法不断将区间缩小一行或者一列//从第一行的最后一个元素进行查找,如果大于该元素,j++,如果小于i++ (i行号, j列号)bool FindInMatrix(int* matrix,int m,int n ,int num){ size_t i = 0, j = n-1; while (j>=0&&i<m) { if (num == matrix[i*n + j]) { return true; } else if (num < matrix[i*n + j]) { j--; } else { i++; } } return false;}
阅读全文
0 0
- 判断二叉树是否平衡、求二叉树的镜像、按行列有序矩阵中快速查找元素是否存在
- day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在
- C++算法之 判断是否为平衡二叉树 求二叉树的镜像
- 判断二叉树平衡/求二叉树的镜像 附属: 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- -判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 每日一题——判断二叉树是否平衡,求一棵二叉树的镜像
- 二叉树--判断一棵二叉树是否是平衡二叉树&&求一颗二叉树的镜像
- 求二叉树深度、判断是否是平衡二叉树
- 判断一棵二叉树是否是平衡二叉树并求一颗二叉树的镜像——题集十
- 判断二叉树是否平衡
- 判断二叉树是否平衡
- 判断二叉树是否平衡
- 判断二叉树是否平衡
- 判断二叉树是否平衡
- 判断二叉树是否平衡
- 经典C++笔试题目--100(编程练习)(91-100)
- 我与AI的相识
- DCL
- UVA1343TheRotationGame
- ZOJ 3632 Watermelon Full of Water(SPFA)
- 判断二叉树是否平衡、求二叉树的镜像、按行列有序矩阵中快速查找元素是否存在
- python练习题 1-10
- 【python】range()
- Pupils Redistribution
- String——写时拷贝
- HDOJ 5094 Maze 【状态压缩+BFS】
- LeetCode- 3. Longest Substring Without Repeating Characters
- [BZOJ2239]猜谜语
- C语言数据结构-线性表-双链表实现