`
yzd
  • 浏览: 1885575 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

二叉树中递归算法的两个应用——数(非)叶子结点的数目和判断是否是排序二叉树

 
阅读更多

//BinaryTree.h

/* 二叉树的二叉链表结点定义 */
typedef char datatype;
typedef struct BiTNode
{
datatype data;
struct BiTNode * LChild , * RChild ;
} BiTNode , * BiTree ;

//数叶子结点的数目
/*
Author: WadeFelix RenV
*/
#include <stdio.h>
#include <stdlib.h>
#include "BinaryTree.h"
int countLeaf( BiTree BT )
{
if( BT == NULL ) return 0;
if( BT->LChild==NULL && BT->RChild==NULL ) return 1;
return(countLeaf(BT->LChild)+countLeaf(BT->RChild));
}

//数非叶子结点的数目

int countNotLeaf( BiTree BT )
{
if( BT == NULL ) return 0;
if( BT->LChild==NULL && BT->RChild==NULL ) return 0;
return(1+countNotLeaf(BT->LChild)+countNotLeaf(BT->RChild));
}

//判断是否是排序二叉树
#include <stdio.h>
#include <stdlib.h>
#include "BinaryTree.h"
int isPaiXu( BiTree BT )
{
if( BT == NULL )return 1;
if( BT->LChild && (BT->LChild->data > BT->data) )return 0;
if( BT->RChild && (BT->RChild->data < BT->data) )return 0;

return( isPaiXu(BT->LChild)&&isPaiXu(BT->RChild) );
}

分享到:
评论

相关推荐

    编写递归算法,计算二叉树中叶子结点的数目

    编写递归算法,计算二叉树中叶子结点的数目

    C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法

    本文实例讲述了C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法。分享给大家供大家参考,具体如下: /*求二叉树叶子节点个数 -- 采用递归和非递归方法 经调试可运行源码及分析如下: ***/ #include #...

    二叉树叶子结点个数计算.doc

    本文档讨论了二叉树叶子结点个数计算的问题,涵盖了二叉树的存储结构、递归算法设计、实现提示、源程序等方面。 一、存储结构 在计算二叉树叶子结点个数时,我们需要首先设计二叉树的存储结构。我们可以使用二叉...

    c语言 二叉树应用:创建、递归非递归遍历、计算结点、分支、交换子树

    非递归中序遍历二叉树(算法2): 层次遍历二叉树: 递归计算单分支结点: 递归计算双分支结点: 递归计算叶子数: 二叉数的深度: 交换二叉树的左右子树: 二叉树已左右交换。 递归先序遍历二叉树: 递归...

    题目:编写递归算法,将二叉树中所有结点的左右子树相互交换 - READ.doc

    二叉树中结点左右子树的递归交换算法设计 一、知识点总览 本文主要讨论二叉树的递归交换算法的设计和实现。该算法的核心是使用递归函数来交换二叉树中所有结点的左右子树,从而实现树形结构中结点的交换。该算法的...

    求二叉树叶子结点个数和遍历中序

    例如,在表达式树中,叶子结点通常表示操作数,而非叶子结点表示运算符。 #### 三、计算叶子结点的数量 计算二叉树中叶子结点的数量是一个常见的问题。根据给定的代码片段,我们可以看到一种递归的方法来实现这一...

    中序线索化二叉树的非递归算法.doc

    中序线索化二叉树的非递归算法 中序线索化二叉树的非递归算法是指对二叉树进行中序遍历,并将其转换为线索化二叉树的算法。这里,我们将详细介绍该算法的实现过程和相关知识点。 算法思想 中序线索化二叉树的非...

    编写算法交换二叉树中所有结点的左右子树.doc

    编写算法交换二叉树中所有结点的左右子树 本文档主要介绍了如何编写算法交换二叉树中所有结点的左右子树。该算法使用 C 语言实现,通过建立...通过输出结点数据和交换左右子树两个步骤,实现了二叉树的交换操作。

    计算二叉树中叶子结点的数目

    在计算机科学中,二叉树是一种特殊的图结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树有许多应用,包括数据检索、表达式求值和编译器设计等。本问题关注的是如何计算二叉树中叶子节点的...

    二叉树部分递归运算

    设一棵二叉树以二叉链表表示,试编写有关二叉树的递归算法 (1)统计二叉树中度为1的节点个数 (2)统计二叉树中度为2的节点个数 (3)统计二叉树中度为0的节点(叶节点)个数 (4)统计二叉树的高度 (5)统计...

    二叉树求叶子节点非递归

    在计算机科学中,二叉树是一种常见的数据结构,它的每个节点最多有两个子节点,通常分为左子节点和右子节点。二叉树的应用广泛,包括文件系统、编译器设计、搜索算法等领域。本篇文章将重点讲解如何非递归地求解...

    统计二叉树叶子结点个数-数据结构算法详解-二叉树叶子结点统计方法与实现

    通过本文的介绍和代码示例,读者不仅能够掌握统计二叉树叶子结点个数的方法,还能够加深对递归算法和广度优先搜索的理解。这将有助于提升解决实际编程问题的能力,特别是在处理树形数据结构时。

    二叉树先序、中序、后序三种遍历的非递归算法

    二叉树三种遍历非递归算法 二叉树是一种常用的数据结构,它广泛应用于计算机科学和软件工程中。二叉树的遍历是指对二叉树中的每个结点进行访问的过程。常见的二叉树遍历方法有三种:先序遍历、中序遍历和后序遍历。...

    二叉树的一些算法:统计叶子节点个数,复制,深度求解

    根据给定的文件标题、描述、标签以及部分内容,本文将详细介绍二叉树中涉及的关键算法,包括统计叶子节点个数、复制二叉树、求解深度等。 ### 一、统计叶子节点个数 在二叉树中,叶子节点是指没有子节点的节点。...

    求度为2的结点个数-二叉树

    在计算机科学中,二叉树是一种常见的数据结构,它由一个根节点以及最多两个子树(左子树和右子树)组成,这两个子树也是二叉树。每个节点最多有两个子节点。在本问题中,我们将处理一个特定类型的二叉树问题:构建一...

    先序遍历二叉树的非递归算法程序

    编写先序遍历二叉树的非递归算法程序,要求: (1)以二叉链表建立二叉树。 (2)输出遍历的结点序列。 (3)有实例验算。

    二叉树后序遍历的非递归算法。

    1. 二叉树的定义:二叉树是一种树形结构,每个结点最多有两个孩子结点,即左孩子和右孩子。 2. 二叉树的遍历:二叉树的遍历是指从根结点开始,按照某种顺序访问每个结点的过程。常见的遍历方法有前序遍历、中序遍历...

    二叉树中两结点最近的共同祖先算法

    二叉树中两结点最近的共同祖先算法 二叉树是一种重要的数据结构,广泛应用于计算机科学和信息技术领域。在本文中,我们将讨论二叉树中两结点最近的共同祖先算法的设计和实现。 算法设计 在设计算法之前,我们需要...

    设二叉树采用链式存储结构,试设计一个算法计算一颗给定二叉树叶子节点的数目

    二叉树是一种树形数据结构,每个节点最多有两个子节点,即左子节点和右子节点。每个节点存储一些数据,例如整数、字符等。二叉树可以用链式存储结构或数组存储结构来实现。在这里,我们使用链式存储结构来实现二叉树...

    二叉树建立 二叉树基本算法的实现

    (3)中序遍历二叉树:非递归算法(最好也能实现先序,后序非递归算法)。 (4)求二叉树的高度 。 (5)求二叉树的叶子个数。 (6)对于树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。 (8...

Global site tag (gtag.js) - Google Analytics