乞力马扎罗的雪CYF的博客

与您分享IT技术,实现共同进步。

经典算法学习——非递归遍历二叉树

我们知道二叉树是一种递归定义的数据结构,包括二叉树的创建、遍历、求树高、叶子节点个数等等。使用递归来进行以上操作非常的简便,相关实现请参考 《C语言实现二叉树的基本操作》。但是今天我们剑走偏锋,使用非递归的方式来实现树的先序、中序、后序遍历。实现代码上传至 https://github.com/c...

2016-10-03 12:28:03

阅读数 2877

评论数 0

经典算法学习——求二叉树的高度

二叉树是一种递归定义的数据结构,我们对它做的几乎所有的操作都是递归的。求树的高度也是如此。分别求左右子树的高度,然后取较长的子树作为高度。代码上传至 https://github.com/chenyufeng1991/BinaryTreeHeight 。核心代码如下:int BinaryTreeH...

2016-10-02 21:10:39

阅读数 11778

评论数 1

经典算法学习——求二叉树叶子节点的个数

二叉树的叶子节点是既没有左子树又没有右子树的特殊的节点,使用递归我们可以方便的计算出共有多少叶子节点。代码上传至  https://github.com/chenyufeng1991/BinaryTreeLeafCount 。核心代码如下:int leafCount = 0; void Leaf...

2016-10-02 18:27:03

阅读数 8009

评论数 1

经典算法学习——求二叉树节点和为sum的路径

在一棵二叉树中,有多少个叶子节点,就会有多少条从根节点到叶子节点的路径。如果给每一个节点一个data值,那么每一条路径经过的节点data加起来就为sum,现在根据给定的sum,请找出有哪些路径符合这个sum。代码上传至 https://github.com/chenyufeng1991/Binar...

2016-10-02 12:20:55

阅读数 3014

评论数 0

经典算法学习——求包含某两个字符的最小子串的长度

碰到这样一道算法题:给定一个字符串,比如: cadacacbedffffreaaawc   ,然后给定两个字符为f,c  ,那么最短子串的长度为5。因为子串有cbedf,freaaawc.  这篇博客考虑的比较简单,是只有两个字符的情况,我会在后续的博客中讲解如果需要包含多个字符那么应该如何处理。...

2016-10-02 10:19:17

阅读数 2465

评论数 0

经典算法学习——层序遍历二叉树

我们可以用很多方式去遍历一颗二叉树,比如先序遍历,中序遍历,后序遍历,其实都是通过递归的来实现。今天我们来对二叉树进行层序遍历,层序遍历的时候需要借助另一种数据结构——队列。本篇的示例代码上传至 https://github.com/chenyufeng1991/LevelOrderBinaryT...

2016-10-01 17:16:44

阅读数 3280

评论数 0

经典算法学习——交换二叉树的左右子树(二叉树的翻转)

对于二叉树,我们必须熟练掌握它的各种操作,今天我们要来实现二叉树的翻转,也就是交换左右子树。具体思路不难,如果一个节点是叶子节点,则不做操作;如果一个节点只有左孩子或者右孩子,则进行交换,原来的孩子为空;如果一个节点既有左孩子和右孩子,则交换左右孩子。详细代码上传至 https://github....

2016-10-01 11:41:43

阅读数 16463

评论数 0

提示
确定要删除当前文章?
取消 删除