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

Algorithm 如何计算树中给定节点之前的叶数?,algorithm,tree,Algorithm,Tree,如何实现一个函数,返回在树中给定元素之前找到的叶数?假设你正在从左到右阅读这棵树 我发现可以这样做,但它不是很简单,并且使用异常机制,我认为可能有一种优雅的方法可以做到这一点?也许你可以直接对树进行dfs,计算叶数,将其保存到每个节点。像 int count; void dfs(int x){ dfs(x->left); leafBefore[x] = count; if (x is leaf) count += 1; dfs(x->right);

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


我发现可以这样做,但它不是很简单,并且使用异常机制,我认为可能有一种优雅的方法可以做到这一点?

也许你可以直接对树进行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);

你可以举一些例子吗?“在给定元素之前找到”是什么意思?可以复制吗?