algorithm - 左子树的深度小于右子树的深度

标签 algorithm data-structures binary-tree

我需要一种算法来检查二叉树中的每个节点,如果左子树的深度小于右子树的深度,则返回 true 或 false。 它必须在 O(n) 内。

我想建立一个函数来计算每个子树的深度,并用它来检查每个节点左子树的深度是否小于右子树的深度,但我认为这将是 O(n^2) .

最佳答案

递归dfs解决方案:

struct node{
    int val;
    bool leftGreater;
    struct node *left, *right;
};

int solve(Node *n){
    if(n == NULL){
        return 0;
    }
    int left = solve(n->left) + 1;
    int right = solve(n->right) + 1;
    if(left > right){
        n->leftGreater = true;
    }else{
        n->leftGreater = false;
    }
return max(left, right);
}

关于algorithm - 左子树的深度小于右子树的深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25952708/

相关文章:

c# - 迭代非方(某种)矩阵

c++ - 试图确定算法的目标

algorithm - 树遍历。中序、前序、后序

arrays - 算法:找到包含 K 个 0's in array of 1' 和 0 的最小连续数组

algorithm - 通过 BFS 实现的最大距离?

java - 集合框架和数据结构

C 使用指针访问不同文件中的结构 - 取消引用指向不完整类型的指针

c++ - 将不相邻的内存缓冲区视为连续缓冲区的数据结构

algorithm - 按字典序生成所有N个节点的二叉树

algorithm - 乘以多项式