获取二叉树深度叶子数

 1 #include <iostream>
 2 using namespace std;
 3 typedef struct node{
 4     char data;
 5     node *lchild,*rchild;
 6 }binode,*bitree;
 7 bitree createTree(bitree root)
 8 {
 9     char ch;
10     cin>>ch;
11     if(ch==‘#‘)
12         root=NULL;
13     else
14     {
15         root=new binode;
16         root->data=ch;
17         root->lchild=createTree(root->lchild);
18         root->rchild=createTree(root->rchild);
19     }
20     return root;
21 }
22 void InOrderTraverse(bitree root)
23 {
24     if(root!=NULL)
25     {
26         cout<<root->data<<" ";
27         InOrderTraverse(root->lchild);
28         InOrderTraverse(root->rchild);
29     }
30 }
31 int depth(bitree root)
32 {
33     int left=0,right=0 ;
34     if(!root)
35         return 0;
36     else
37     {
38         right=depth(root->rchild);
39         left=depth(root->lchild);
40     }
41     return right>left?right+1:left+1;
42 }
43 int count(bitree root)
44 {
45     int n=0;
46     if(!root)
47         return 0;
48     else if(root->lchild==NULL&&root->rchild==NULL)
49         return 1;
50     else
51         n=count(root->lchild)+count(root->rchild);
52     return n;
53 }
54 int main()
55 {
56     bitree root=NULL;
57     root=createTree(root);
58     InOrderTraverse(root);
59     cout<<depth(root)<<endl;
60     cout<<count(root)<<endl;
61 }
时间: 2025-01-08 20:01:26

获取二叉树深度叶子数的相关文章

二叉树的创建和四种遍历(前序、先序、后序、层次、结点的层数、深度、叶子数等)—java描述

二叉树的创建和四种遍历(前序.先序.后序.层次.结点的层数.深度.叶子数等)—java描述 package javab; //树的结点类 public class TreeNode { String data; TreeNode leftChild,rightChild,next; public TreeNode(String data){ this.data=data; } public TreeNode(String data,TreeNode left,TreeNode right){ l

SDUT 3342 数据结构实验之二叉树三:统计叶子数

数据结构实验之二叉树三:统计叶子数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点).请建立二叉树并求二叉树的叶子结点个数. Input 连续输入多组数据,每组数据输入一个长度小于50个字符的字符串. Output 输出二叉树的叶子结点个数. Example Input abc,,de,g,,f

求二叉树深度

概念: 1.二叉树深度:树中结点的最大层次称为树的深度或高度. 2.二叉树层次:从根开始定义起,根为第一层,根的孩子为第二层,以此类推. 要点: 1.递归. 2.二叉树深度为左右子树深度较大值+1. 代码: /* 求二叉树深度 by Rowandjj 2014/7/13 ------------------------------- 题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 输入: 第一行输入有n,n表示

二叉树之 二叉树深度

二叉树深度: // 获取最大深度 public static int getMaxDepth(TreeNode root) { if (root == null) return 0; else { int left = getMaxDepth(root.left); int right = getMaxDepth(root.right); return 1 + Math.max(left, right); } } 二叉树宽度: 使用队列,层次遍历二叉树.在上一层遍历完成后,下一层的所有节点已经放

二叉树(4)----求二叉树深度

1.二叉树定义 typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct BTreeNode_t_ *m_pRight; } BTreeNode_t; 2.求二叉树深度 定义:对任意一个子树的根节点来说,它的深度=左右子树

一步一步写算法(之二叉树深度遍历)

原文:一步一步写算法(之二叉树深度遍历) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 深度遍历是软件开发中经常遇到的遍历方法.常用的遍历方法主要有下面三种:(1)前序遍历:(2)中序遍历:(3)后序遍历.按照递归的方法,这三种遍历的方法其实都不困难,前序遍历就是根-左-右,中序遍历就是左-根-右,后续遍历就是左-右-根.代码实现起来也不复杂. 1)前序遍历 void preorder_traverse(TREE_NODE* pTree

【数据结构与算法】二叉树深度遍历(递归)

二叉树的深度遍历用递归的话就没有什么好说的了. 代码实现 /** * 源码名称:TreeIteratorRecursion.java * 日期:2014-08-23 * 程序功能:二叉树深度遍历 * 版权:[email protected] * 作者:A2BGeek */ public class TreeIteratorRecursion { class TreeNode<T> { private T mNodeData; private TreeNode<T> mLeftChi

剑指offer (39) 二叉树深度

题目:输入一棵二叉树的根节点,求该树的深度 题解分析: 二叉树具有天然的递归性,首先应该想递归解法 /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int maxDept

【数据结构与算法】二叉树深度遍历(非递归)

据说这个笔试面试的时候非常easy考到,所以写到这里. 图示 代码实现 /** * 源代码名称:TreeIteratorNoRecursion.java * 日期:2014-08-23 * 程序功能:二叉树深度遍历(非递归) * 版权:[email protected] * 作者:A2BGeek */ import java.util.Stack; public class TreeIteratorNoRecursion { class TreeNode<T> { private T mNod