所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。 访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。 一、遍历二叉树 二叉树是由三个基本单元组成的:根(D)、左子树(L)、右子树(R); 若能依次遍 ...
分类:
其他好文 时间:
2019-04-27 19:36:15
阅读次数:
187
二叉树的先序/中序/后序遍历递归/非递归实现,讲的很清楚,其中后序遍历和先序中序的处理有些不一样: https://blog.yangx.site/2016/07/22/Python-binary-tree-traverse/ ...
分类:
其他好文 时间:
2019-04-27 12:49:47
阅读次数:
100
归并排序仍然是利用完全二叉树实现,它是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列。 基本过程:假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并 ...
分类:
编程语言 时间:
2019-04-25 14:29:57
阅读次数:
438
1 //二叉树的先序遍历(非递归) 2 public void PreOrderTraverse() 3 { 4 BiTNode p = this.root; 5 Stack stack = new Stack(10000); 6 7 while(!stack.isEmpty || p != nul... ...
分类:
其他好文 时间:
2019-04-22 09:20:01
阅读次数:
114
概述:本文主要讲述二叉树的前序、中序、后序遍历的递归与非递归实现及广度优先遍历、深度优先遍历和之字形遍历。 正确的输出结果是: (1)先序遍历 以根左右的顺序进行遍历 递归方式 非递归方式 (2)中序遍历 以左根右的顺序进行遍历 递归方式 //<editor-fold desc="中序遍历-递归"> ...
分类:
其他好文 时间:
2019-04-18 09:28:47
阅读次数:
110
反转二叉树 java实现 描述 实现二叉树的反转 示例: 原二叉树: 解析 递归 1.判断根是否为空,根为空直接返回根;否则继续;2.递归反转根的左右子树 非递归 1.判断根是否为空,根为空直接返回根;否则继续;2.交换根节点的左右子节点;3. 交换第二层结点的左右子树;4 重复下去,最后一个结点。 ...
分类:
其他好文 时间:
2019-04-18 00:40:25
阅读次数:
200
//题目要求要求:不能使用C函数库中的字符串操作函数(否则本题也没什么意义了啊)<1>非递归方法此方法基本思想是设立两个指针,分别指向字符串的头尾并且依次交换所指向的数据,代码中为left和right源代码:#include<stdio.h>#include<stdlib.h>#include<string.h>//因为要使用strlen()语句vo
分类:
编程语言 时间:
2019-04-11 19:37:29
阅读次数:
189
<1>非递归基本思想:依次读字符串的每一位,若不是\0则累加器++源代码:#include<stdio.h>#include<stdlib.h>intMystrlen(char*str){inti=0;while(*(str+i)!=‘\0‘){i++;}returni;}intmain(){char*str="absjcs";intresult;result=
分类:
编程语言 时间:
2019-04-11 19:36:20
阅读次数:
147
此题目基本思想与非递归方法思想一样,主要是对输入的数进行取数(对10取余)和缩小(整除10)eg:1234第一次1234%10取得数4,1234/10缩小为123第二次123%10取得数3,123/10缩小为12第三次12%10取得数2,12/10缩小为1第四次当调用的数小于十直接取得此数为1源代码:#include<stdio.h>#include<stdlib.h>in
分类:
编程语言 时间:
2019-04-11 19:29:42
阅读次数:
371