计算二叉树的大小

二叉树的大小是指树中存在的节点的数量。例如,下面这棵二叉树的大小是5。

我们定义 size(tree) 函数用来递归地计算二叉树 tree 的大小,它的工作原理如下

二叉树的大小 = 1 + 左子树的大小 + 右子树的大小

Algorithm:

size(tree)
1. 如果 tree 为空,则返回0
2. 否者
     (a) 通过递归地调用 size(tree.left) 获取左子树的大小
     (a) 通过递归地调用 size(tree.right) 获取右子树的大小
     (c) 用如下公式求出二叉树的大小:
            size(tree)  =  size(left) + size(right) + 1
     (d) 返回 size(tree)
#include <bits/stdc++.h>
using namespace std; 

class node
{
    public:
    int data;
    node* left;
    node* right;
};  

node* newNode(int data)
{
    node* Node = new node();
    Node->data = data;
    Node->left = NULL;
    Node->right = NULL;  

    return(Node);
}  

int size(node* node)
{
    if (node == NULL)
        return 0;
    else
        return(size(node->left) + 1 + size(node->right));
}  

int main()
{
    node *root = newNode(1);
    root->left = newNode(2);
    root->right = newNode(3);
    root->left->left = newNode(4);
    root->left->right = newNode(5);  

    cout << "Size of the tree is " << size(root);
    return 0;
}  

原文地址:https://www.cnblogs.com/xielei/p/10602812.html

时间: 2024-07-30 22:16:37

计算二叉树的大小的相关文章

Java中计算对象的大小

一.计算对象大小的方法 Java中如何计算对象的大小呢,找到了4种方法: 1.java.lang.instrument.Instrumentation的getObjectSize方法: 2.BTraceUtils的sizeof方法: 3.http://yueyemaitian.iteye.com/blog/2033046中提供的代码计算: 4.https://github.com/mingbozhang/memory-measurer提供的工具包: 本质上java.lang.instrument

(7)计算二叉树的高度和结点数——3

通过使用后序遍历的方式计算二叉树的高度.可以先计算左子树的高度h1,后计算右子树的高度h2,树的高度h3. h3 = max (h1, h2) + 1 ; 二叉树的高度,也就是从根结点出发一直到叶结点的路径的长度. 因为在每种遍历方法中对每个结点都仅访问一次,所以可以在进行遍历时对结点的数目进行计算. --整理自<C/C++程序员面试宝典>

【转】Android绘制View的过程研究——计算View的大小

Android绘制View的过程研究——计算View的大小 转自:http://liujianqiao398.blog.163.com/blog/static/1818272572012102321850385/ 2012-11-23 14:24:59|  分类: Android开发 |  标签:android  view  android开发  |举报|字号 订阅 下载LOFTER客户端 一.android绘制view的过程简单描述           简单描述可以解释为:计算大小(measu

计算二叉树的深度,结点的个数。

//算法5.5 计算二叉树的深度,结点的个数. #include<iostream> using namespace std; //二叉树的二叉链表存储表示 typedef struct BiNode { char data; //结点数据域 struct BiNode *lchild,*rchild; //左右孩子指针 }BiTNode,*BiTree; //用算法5.3建立二叉链表 void CreateBiTree(BiTree &T) { //按先序次序输入二叉树中结点的值(一

SharePoint 计算列比较大小

用U2U工具生成计算列比较大小的代码如下: <Where>      <Geq>         <FieldRef Name='Year' />         <Value Type='Calculated'>2014</Value>      </Geq>   </Where> 但是这种比较大小的方式有时会得不到想要的结果,如果计算列是数字,要比较大小的话,最好手动换成如下代码: <Where>     

计算文件夹大小、拷贝文件显示进度

计算文件夹大小(get-childitem -path $folder -recurse| measure-object -property length -sum).sum/1mb #拷贝文件提示进度(脚本只对零散文件有效,如果有大型文件的话,进度显示不正确)$folder = "D:\Temp_del"$des = "d:\test"$p=0$sizes = (get-childitem -path $folder -recurse| measure-objec

JVM调优-计算活跃数据大小

活跃数据,有时候也叫做存活数据,指应用处于稳定运行状态下,在Java堆里面长期存活的对象的大小.换一句话说,就是应用在稳定运行的状态下,FullGC之后,Java堆的所占的空间大小(内存的占用情况). 1.活跃数据计算的重要性 Java应用的活跃数据大小的计算,是我们进行JVM调优的一个必备的过程,如果我们不知道这个系统的活跃数据有多少,那么我们怎么给他分配合适的内存?因此,计算活跃数据大小是JVM调优的的重要一步. Java应用的活跃数据大小可以通过GC日志收集. 活跃数据主要包括两块,老年代

聊聊JVM(三)两种计算Java对象大小的方法

这篇说说如何计算Java对象大小的方法.之前在聊聊高并发(四)Java对象的表示模型和运行时内存表示 这篇中已经说了Java对象的内存表示模型是Oop-Klass模型. 普通对象的结构如下,按64位机器的长度计算 1. 对象头(_mark), 8个字节 2. Oop指针,如果是32G内存以下的,默认开启对象指针压缩,4个字节 3. 数据区 4.Padding(内存对齐),按照8的倍数对齐 数组对象结构是 1. 对象头(_mark), 8个字节 2. Oop指针,如果是32G内存以下的,默认开启对

Python_计算文件夹大小

计算文件夹大小 os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getsize(path) 返回path的大小 os.path.isdir(path) 如果path是一个存在的目录,则返回True.否则返回False 递归版: 1 import os 2 3 4 def get_size(pa