
复习刷题
demi_hu
这个作者很懒,什么都没留下…
展开
-
【基础题】--实现二叉树的前序 / 中序 / 后序非递归遍历
二叉树的递归遍历,我们知道是很简单的,而非递归遍历则需要利用栈的先进后出特性来实现。1、前序非递归遍历 利用双重循环,内部循环将左孩子要入栈中直到左孩子为空,并且压一个输出一个数据,再判断栈顶的右孩子。若右孩子不为空,则再循环将其压入栈中,若右孩子为空,则pop栈顶数据。直到栈为空,遍历完成。2、中序非递归遍历 中序遍历与前序遍历是异曲同工的,只是应先将左孩子全部压入栈中原创 2017-08-01 22:37:14 · 404 阅读 · 0 评论 -
判断一个节点是否在二叉树中,判断tree2是否为tree1的子树
1、判断一个节点是否在一棵二叉树中。 先判断根节点,递归判断左子树,递归判断右子树。2、判断一颗二叉树是是否是另一颗树的子树。比如tree2是tree1的子树。 先判断根,根相同再判断左右子树如果所有的都相同,则此树是另一个树的子树。 如果只有根相同,则向下继续找和跟相同的结点。代码:#include<iostream>using namespace std;struct原创 2017-08-01 22:50:55 · 1574 阅读 · 0 评论 -
求二叉树中两个节点的最近公共祖先(三叉链,搜索树,普通二叉树)
求二叉树中两个节点的最近公共祖先。要求:分别考虑以下三种情况 1、二叉树每个节点有parent(三叉链) 2、二叉树是搜索二叉树。 3、就是普通二叉树。(尽可能实现时间复杂度为O(N)) 节点:struct Node{ int _data; Node* _left; Node* _right; Node* _原创 2017-08-09 19:58:27 · 718 阅读 · 0 评论 -
判断一棵树是否是完全二叉树
完全二叉树概念 若设二叉树的深度为h,除第h 层外,其它各层(1~h-1) 的结点数都达到最大个数,第h 层所有的结点都连续集中在最左边,这就是完全二叉树 思路 :利用队列queue实现(层序遍历思想) 1、如果树为空,则直接返回false 2、如果树不为空:层序遍历二叉树 (1)如果一个结点左右孩子都不为空,则pop该节点原创 2017-08-03 18:58:12 · 767 阅读 · 0 评论 -
九大排序算法
排序算法一直都是各个公司年年都会拿出的面试题,作为初入社会寻找工作的小白,掌握各个排序算法是及其重要的。原创 2017-08-24 20:47:55 · 436 阅读 · 0 评论