2014-408算法题

题目

IMG_20220530_200841.jpg

思想

递归遍历

代码

int WPL(BTree B, int deep) {
    int leftWPL = 0, rightWPL = 0;
    if(B->left != NULL)
        leftWPL = WPL(B->left, deep + 1);
    if(B->right != NULL)
        rightWPL = WPL(B->right, deep + 1);
    return leftWPL + deep * B->weight + rightWPL;   
}

测试

int main() {
    BTree B = create(2);
    BTNode *n1 = create(3);
    BTNode *n2 = create(4);
    B->left = n1;
    B->right = n2;
    BTNode *n3 = create(5);
    BTNode *n4 = create(6);
    n2->left = n3;
    n2->right = n4;
    printf("result:%d\n", WPL(B, 1));
    return 0;
}
捕获4.PNG

其他代码

#include<stdio.h>
#include<stdlib.h>

typedef struct node {
    struct node *left, *right;
    int weight;
}BTNode, *BTree;

BTNode* create(int data) {
    BTNode *node = (BTNode*)malloc(sizeof(BTNode));
    node->weight = data;
    node->left = NULL;
    node->right = NULL;
    return node;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容