Random Node in A Binary Tree

来源:互联网 发布:net3.5 百度软件 编辑:程序博客网 时间:2024/05/16 08:26

转自:http://www.fgdsb.com/tags/Random/


1
2
3
4
5
6
7
8
9
10
11
12
13
14
void randNodeImp(const TreeNode * node, int & idx, const TreeNode * & r) {
    if (!node) return;
    if (rand(idx) == 0)
        r = node;
    randNodeImp(node->left,  ++idx, r);
    randNodeImp(node->right, ++idx, r);
}
 
const TreeNode * randNode(const TreeNode * root) {
    int idx = 1;
    const TreeNode * r = 0;
    randNodeImp(root, idx, r);
    return r;
}

0 0
原创粉丝点击