如何计算树中给定节点之前的叶子?

时间:2012-08-31 09:25:04

标签: algorithm tree

如何实现一个函数,该函数返回在该树中给定元素之前找到的叶子数?假设你是从左到右阅读树?

我发现它做了但它不是很直接并且使用Exceptions机制,我认为可能有一种优雅的方式来做它?

1 个答案:

答案 0 :(得分:0)

也许你可以直接dfs树,计算叶子,将它保存到每个节点。像

int count;

void dfs(int x){
    dfs(x->left);
    leafBefore[x] = count;
    if (x is leaf) count += 1;
    dfs(x->right);
}

count = 0;
dfs(root);