C++ 在二叉树中查找最大数

标签 c++ binary-tree

数字的二叉树,具有节点结构

type def numbernode
{
    unsigned value;
    numbernode * left;
    numbernode * right;
}

和一个外部指针(指向根节点) 写一个函数 在最大的(numbernode * 树) 如果树不为空,将返回树中最大的数。如果树为空,您的函数应返回 -1。

这是一个测试练习题,我花了几个小时试图弄明白,我需要一些代码帮助!!

最佳答案

一旦你开始以正确的方式思考递归问题,特别是关于树的问题,递归问题真的很容易解决。 “树上最大的数字是多少?它是我自己、我的左 child 和我的右 child 中最高的……我左 child 中最高的是什么?它是那个 child 中最高的,它的左边,它的对……”等等。

非常简单的递归问题。

int largest( node* root )
{
    if ( root == null )
        return -1;

    int left = largest(root->left);
    int right = largest ( root->right);
    if( root->value > left && root->value > right )
       return root->value;
    else
       return max ( left, right );
}

关于C++ 在二叉树中查找最大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860759/

相关文章:

c - 二叉树在构建树时丢失节点

algorithm - 二叉树递归问题

c++ - 我们如何在不将哨兵添加到平均值的情况下打破循环?

c++ - 为什么在这两种情况下使用 C++ 模板会出现差异?

c++ - 避免在 C++ 中重复树的左右子节点

algorithm - 计算二叉树节点数

c++ - 哪种算法用于计算 GNU C++ 标准库的指数函数?

c++ - 如何从 C++ 中安全地转义字符串

c++ - 我如何排序不是数组的元素,而是它的索引?

c++ - 如何递归访问所有树节点