1011. Find the external path length

来源:互联网 发布:网络歌手家家 编辑:程序博客网 时间:2024/06/06 12:53
Description

Given the linked representation of binary trees


typedef int T;
struct BinaryNode{
T data; //store data 
BinaryNode *left, *right;
BinaryNode(T d, BinaryNode *l=NULL, BinaryNode* r=NULL):data(d), left(l), right(r) {};
};

Implement the following function:

int externalPL(const BinaryNode* root)

// returns the external path lenght of the binary tree root

{

// insert here

 

}


n外部路径长度
从根到达各个叶节点的路径长度之和
n内部路径长度
    从根到达各个分支节点的路径长度之和


用层次遍历,一层一层的找叶节点,方法与1003类似,添加标志结点来判断是那一层。

#include <iostream>#include <queue>using namespace std;typedef int T;struct BinaryNode{    T data; //store data    BinaryNode *left, *right;    BinaryNode(T d, BinaryNode *l=NULL, BinaryNode* r=NULL):data(d), left(l), right(r) {};};int externalPL(const BinaryNode* root)// returns the external path lenght of the binary tree root{    if (root == NULL) {        return 0;    }    int count = 0;    int sum = 0;    queue<const BinaryNode*> s;    s.push(root);    const BinaryNode* b = new BinaryNode(-1, NULL, NULL);    s.push(b);    while (!s.empty()) {        const BinaryNode* a = s.front();        s.pop();        if (s.size() == 0) break;        //每一层的长度        if (a == b) {            count++;            s.push(b);        }        else {            if (a->left != NULL) {                s.push(a->left);            }            if (a->right != NULL) {                s.push(a->right);            }            //判断是否为叶节点            if (a->left == NULL && a->right == NULL) {                sum += count;            }        }    }    return sum;    }


0 0
原创粉丝点击