//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++使用递归和非递归算法实现的二叉树叶子节点个数计算方法。分享给大家供大家参考,具体如下: /*求二叉树叶子节点个数 -- 采用递归和非递归方法 经调试可运行源码及分析如下: ***/ #include #...
非递归中序遍历二叉树(算法2): 层次遍历二叉树: 递归计算单分支结点: 递归计算双分支结点: 递归计算叶子数: 二叉数的深度: 交换二叉树的左右子树: 二叉树已左右交换。 递归先序遍历二叉树: 递归...
编写递归算法,计算二叉树中叶子结点的数目
设一棵二叉树以二叉链表表示,试编写有关二叉树的递归算法 (1)统计二叉树中度为1的节点个数 (2)统计二叉树中度为2的节点个数 (3)统计二叉树中度为0的节点(叶节点)个数 (4)统计二叉树的高度 (5)统计...
二叉树非递归求叶子节点,以及前序、中序、后序遍历算法
题目:编写递归算法,将二叉树中所有结点的左右子树相互交换 - READ.doc
编写先序遍历二叉树的非递归算法程序,要求: (1)以二叉链表建立二叉树。 (2)输出遍历的结点序列。 (3)有实例验算。
总结的一些关于二叉树的算法,与大家共享(如统计叶子节点,复制二叉树,节点数目,深度算法等等等)
(3)中序遍历二叉树:非递归算法(最好也能实现先序,后序非递归算法)。 (4)求二叉树的高度 。 (5)求二叉树的叶子个数。 (6)对于树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。 (8...
用户以先序遍历的方式键入二叉树各结点的数据域值(字符型),程序建立二叉树,然后分别用递归和非递归算法对二叉树进行遍历。每访问一个结点即打印该结点的数据域值。
2.用递归及非递归算法对二叉树实现先序遍历; 3.用递归及非递归算法对二叉树实现中序遍历; 4.用递归及非递归算法对二叉树实现后序遍历。 5.用递归遍历算法中的访问结点的操作修改为叶结点计数,统计度为0的;度为1...
二叉树的非递归遍历运算 建立二叉树的三叉链式存储结构,在此基础上完成下列算法: 1) 从键盘上输入二叉树的各个结点,建立三叉链表 2) 输出该二叉树 3) 非递归的层次遍历算法 4) 非递归的先序遍历、中序遍历、...
编写算法交换二叉树中所有结点的左右子树.doc
2. 按先序、中序和后序遍历二叉树(递归算法)。 3. 按某种形式输出整棵二叉树。 4. 求二叉树的高度。 5. 求二叉树的叶结点个数。 6. 交换二叉树的左右子树。 7. 借助队列实现二叉树的层次遍历。 8. 在主函数...
编写递归算法,在二叉树中求位于先序序列中第K个位置的结点。
递归算法应用:删除某一个节点的子树算法
在利用栈建立一个二叉树的基础上,我们可以通过递归来实现二叉树中两个结点的最近公共祖先结点。递归是一种非常强大的算法技巧,它可以通过反复调用自身来解决问题。在这个特定的问题中,我们可以利用递归来查找两个...
中序线索化二叉树的非递归算法:设计技巧:依某种顺序遍历二叉树,对每个结点p,判断其左指针是否为空,以及其前驱结点pre的右指针是否为空。