• 计算二叉树的大小


    二叉树的大小是指树中存在的节点的数量。例如,下面这棵二叉树的大小是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 <stdio.h>
    #include <stdlib.h>
    /*
    * 二叉树节点包含数据域,指向左子树的指针,指向右子树的指针
    */
    struct node { int data; struct node* left; struct node* right; }; 
    /* 
    * 辅助函数
    * 使用给定的数据生成二叉树节点,节点的左子树和右子树均为空
    */
    struct node* newNode(int data)  
    { 
        struct node* node = (struct node*) 
                                    malloc(sizeof(struct node)); 
        node->data = data; 
        node->left = NULL; 
        node->right = NULL; 
        
        return(node); 
    } 
        

    * 计算二叉树中节点数
    */ int size(struct node* node) { if (node==NULL) return 0; else return(size(node->left) + 1 + size(node->right)); } int main() { struct node *root = newNode(1); root->left = newNode(2); root->right = newNode(3); root->left->left = newNode(4); root->left->right = newNode(5); printf("Size of the tree is %d", size(root)); getchar(); return 0; }
  • 相关阅读:
    C#session配置
    在本地局域网 windows server 2008 下安装 Nginx 1.12.1
    博客园地址
    oracle 导入关键字说明
    oracle 导出关键字说明
    重塑和轴向旋转
    合并重叠数据
    Pandas 的轴向连接 concat
    c语言数据类型、运算符和表达式
    数据规整化:pandas 求合并数据集(交集并集等)
  • 原文地址:https://www.cnblogs.com/xielei/p/10602812.html
Copyright © 2020-2023  润新知