`
leidiqiu
  • 浏览: 135095 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

求二叉树某一层的所有节点及求二叉树的高度

 
阅读更多

1、输出二叉树某一层上所有的节点,一般用递归方式解决。

2、求二叉树的高度,也用递归方式解决。

 

/*

如何打印二叉树某一层上的所有节点?
如何求出二叉树的高度?

*/

#include <stdio.h>
#include <string.h>

struct Node{
	int value;
	Node *left;
	Node *right;
};

//构造二叉树
void createLR(Node *pn){
	if((pn->value)<50){
		Node *pl=new Node;
		Node *pr=new Node;
		pl->value=(pn->value)*2;
		pr->value=(pn->value)*2+1;
		pn->left=pl;
		pn->right=pr;
		createLR(pl);
		createLR(pr);
	}else{
		pn->left=NULL;
		pn->right=NULL;
	}
}

//打印二叉树某一层上的所有节点?
void level_sum_out(Node *p, int level){

	if(!p){
		return;
	}

	if(1==level){
		printf("%d ",p->value);
	}else{
		level_sum_out(p->left,level-1);
		level_sum_out(p->right,level-1);
	}
}

//如何求出二叉树的高度?
int getHeight(Node *p){
	if(NULL==p){
		return 0;
	}else{
		int lh=getHeight(p->left);
		int rh=getHeight(p->right);
		return (lh>rh)?(lh+1):(rh+1);
	}
}

void main(){

//	char a[]="abc";
//	int t=strlen(a);
//	t=sizeof(a); 

	//构造二叉树
	Node *pn=new Node;
	pn->value=1;
	createLR(pn);
    level_sum_out(pn,5);
	int height=getHeight(pn);
	printf("\n%d\n",height);


}

 

分享到:
评论

相关推荐

    二叉树指定第i层输出以及打印叶子结点

    3. **递归遍历下一层**:如果不是第一层,则递归调用`LevelPrint`函数处理左右子树,同时将层次计数器减1。 #### 主函数(`main`)操作流程 主函数中包含了以下关键步骤: 1. 初始化`BiTree`对象`bitree`。 2. 计算...

    二叉树的创建遍历以及求二叉树的高度程序源码

    二叉树的创建遍历以及求二叉树的高度程序源码 先序创建 前序遍历 树的层次

    求二叉树最大宽度 求二叉树最大宽度 数据结构

    在探讨“求二叉树最大宽度”的数据结构问题时,我们深入分析了如何通过特定算法找到一棵二叉树中每一层节点的最大数量,这一过程涉及到了数据结构与算法设计的关键概念和技术。 ### 一、二叉树的概念 二叉树是一种...

    数据结构中求二叉树的高度和宽度C++代码

    宽度(或称为最大宽度)是指二叉树某一层中节点的最大数量。计算宽度可以采用层序遍历来完成。这里提供一个计算宽度的示例函数: ```cpp int MaxWidth(Bnode *root) { if (root == NULL) return 0; queue*&gt; q; q...

    树 二叉树 各种操作 删除叶节点 返回宽度 高度 等

    宽度,也称作宽度优先搜索(BFS)层的节点数,反映了树在某一层次的最大节点数量。这可以通过层次遍历来实现,使用队列数据结构按层次顺序存储节点,每层结束后更新最大宽度。 再者,计算二叉树的高度是一项基础...

    求二叉树节点的最大距离

    具体到这个问题,可以通过递归计算每个子树中的最大距离,然后将这些值合并以得到上一层节点的最大距离。 具体步骤如下: 1. 定义递归函数`FindMaxLen`,该函数接收一个节点作为参数,并返回以该节点为根的子树中...

    c代码-求二叉树的叶子节点和高度

    本主题主要关注如何使用C语言来实现一个算法,计算二叉树的叶子节点数量以及其高度。 首先,我们需要定义二叉树的节点结构。在C语言中,可以使用结构体来表示二叉树的节点: ```c typedef struct Node { int data...

    将满二叉树转化为求和二叉树_二叉树_

    满二叉树是一种特殊的二叉树,其中每一层都是完全填充的,除了可能的最后一层,且最后一层的所有节点都尽可能地向左靠拢。而将满二叉树转化为求和二叉树,通常涉及到对树的遍历和节点值的处理。这里,我们主要讨论...

    二叉树遍历问题及节点统计

    在计算机科学领域,二叉树是一种特殊的图结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树遍历是针对这种数据结构进行操作的一种核心算法,广泛应用于搜索、排序、编译器设计等多个IT领域的...

    二叉树的遍历与求深度以及结点数

    4. **层次**: 节点所在的位置,根节点位于第一层,其子节点位于第二层,以此类推。 5. **高度**: 树的高度是指从根节点到最远叶子节点的最长路径上边的数量。 #### 二、二叉树的遍历方法 二叉树的遍历是访问树中的...

    二叉树的建立及遍历

    - 凹入法(也称为层次遍历或水平遍历)按照从上到下、从左到右的顺序输出每一层的节点,同一层的节点之间用空格分隔,不同层的节点用换行符分隔。 - 可以使用队列数据结构辅助实现,将根节点入队,然后每次出队一...

    二叉树的各种操作各种遍历,复制,求高度,判断是否为一棵完全二叉树以及计算用二叉树存储的表达式

    完全二叉树是一种特殊的二叉树,其中除了最后一层外,每一层都是满的,并且最后一层的节点都集中在左侧。判断一棵二叉树是否为完全二叉树可以通过广度优先搜索来实现。 ```cpp bool IsCompleteBinaryTree(BiTree bt...

    二叉树部分递归运算

    (5)统计二叉树的宽度,即在二叉树的各层上具有结点数最多的那一层上结点总数 (6)计算二叉树中各节点中的最大元素值 (7)交换每个结点的左孩子结点和右孩子结点 (8)从二叉树中删去所有叶子结点

    复制一棵二叉树

    复制二叉树的关键在于递归地复制每一层的节点及其子节点,以确保新旧二叉树的结构和数据完全一致。算法设计遵循以下步骤: 1. **基本情况处理**:如果原二叉树为空,则返回空指针。 2. **复制当前节点**:为当前...

    先序创建二叉树并遍历计算节点数

    先序创建二叉树并遍历计算节点数 先序创建二叉树并遍历计算节点数

    子树深度,完全二叉树的计算

    如果最后一个非空节点的下一层所有节点都不存在,那么这棵树就是一个完全二叉树。在文件“完全二叉树的判别.cpp”中,可能提供了实现这一逻辑的代码。 对于二叉链表存储结构,它是二叉树的一种常见表示方式,每个...

    二叉树 基础

    而在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点,则此二叉树为完全二叉树。具有n个节点的完全二叉树的深度为log2n+1。深度为k的完全二叉树,至少有2^(k-...

    二叉树按层遍历

    `PrintNodeAtLevel` 函数负责打印第 `level` 层的所有节点,而 `LevelTraverse` 函数则利用 `Depth` 函数计算出二叉树的高度,并对每一层调用 `PrintNodeAtLevel` 函数进行遍历。 #### 五、主函数 最后,在 `main`...

    求二叉树的建立、遍历、叶子结点树、深度

    二叉树是一种基本的数据结构,它广泛应用于计算机科学和信息技术领域。二叉树的建立、遍历、叶子结点树、深度等操作是二叉树的基本操作。本文将对二叉树的建立、遍历、叶子结点树、深度等操作进行详细的介绍。 ...

    二叉树遍历算法应用各种算法包括遍历创建求深度等

    二叉树是一种常见的数据结构,遍历二叉树是指从根节点开始访问树中的所有节点,并对其进行处理。二叉树遍历算法有多种,包括前序遍历、中序遍历、后序遍历、层次遍历等。每种遍历算法都有其特点和应用场景,本文将...

Global site tag (gtag.js) - Google Analytics