首页 > 其他分享 >输出二叉树第h层上的所有结点(1<=h<=k)

输出二叉树第h层上的所有结点(1<=h<=k)

时间:2023-02-13 11:38:14浏览次数:52  
标签:Node 结点 struct 层上 deep 二叉树 print

输出二叉树第h层上的所有结点(1<=h<=k)

问题引入:

已知一颗二叉链表方式存储的深度为k的二叉树,根结点是第1层。编写算法,输出第h层所有结点,1<=h<=k。

分析

二叉树的算法题一般都能通过递归解决,我们每次都比较当前结点是否在第h层,若在,输出其数据域的值,若不在,继续在左子树和右子树递归。

核心算法:

typedef struct Node {
	DataType data;//数据域
	struct Node *leftchild;//左子树指针
	struct Node *rightchild;//右子树指针
}BiTreeNode;
//输出二叉树中第h层的所有结点
//deep的初始值设为1,表示当前结点所在层数
void print_h(BiTreeNode *T, int deep, int h)
{
	if (T)
	{
		if (deep == h)
		{
			printf("%c ", T->data);
		}
		print_h(T->leftchild, deep + 1, h);
		print_h(T->rightchild, deep + 1, h);
	}
}

标签:Node,结点,struct,层上,deep,二叉树,print
From: https://blog.51cto.com/u_15961549/6053818

相关文章

  • 剑指 Offer 32 - II. 从上到下打印二叉树 II(java解题)
    目录1.题目2.解题思路3.数据类型功能函数总结4.java代码5.踩坑记录1.题目从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定......
  • 两个单向循环链表的合并(带头结点)
    两个单向循环链表的合并(带头结点)问题引入:已知两个带头结点的单向循环链表,LA和LB分别是链表的头指针,LA=(a1,a2…am),LB=(b1,b2,…bm),编写算法,将LA和LB合并成一个单......
  • 二叉树的层序遍历
    二叉树的层序遍历一、定义       所谓二叉树的层次遍历,是指从二叉树的第一层(根节点开始)自上而下逐层遍历,同层内按照从左至右的顺序逐个结点访问。    ......
  • 求二叉树中度为1的结点个数
    一、问题引入已知一颗以二叉链表方式存储的二叉树,编写算法计算二叉树的单孩子的结点数。单孩子是指该结点只有左孩子或只有右孩子(其实就是求度为1的结点个数)二、......
  • 6.5用二叉树实现哈夫曼编码
       莫尔斯编码是根据日常文本中各字符出现频率决定表示各字符的编码的数据长度。不过,该编码体系,对AAAAAABBCDDEEEEEEF这样的特殊文并不是最合适的。在莫尔斯编码中,E......
  • 《剑指Offer》-28-对称二叉树
    boolcheck(TreeNode*left,TreeNode*right){ if(!left&&!right)returntrue; if(!left||!right)returnfalse; returnleft->val==right->val&& ......
  • 6.5 用二叉树实现哈夫曼编码
    莫尔斯编码是根据日常文本中各字符的出现频率来决定表示各字符的编码的数据长度的。不过,该编码体系,对AAAAAABBCDDEEEEEF这样的特殊文本并不是最适合的。在莫尔斯编码中,E的......
  • 剑指 Offer 32 - I. 从上到下打印二叉树(java解题)
    目录1.题目2.解题思路3.数据类型功能函数总结4.java代码1.题目从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如:给定二叉树: [3,9,......
  • 数据结构133-二叉树插入操作代码
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width......
  • 数据结构134-二叉树插入测试代码
    ......