检查二叉树是否左

rwqw0loc  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(507)

我在试着检查二叉树是否是左的。只有当左子树的高度不小于右子树的高度,并且左子树和右子树也是“左”子树时,才会发生这种情况。如果树是空的或者是叶子。
换句话说,树和所有子树必须是“左”的,即在树和每个子树中,左子树的高度不应小于右子树的高度。
现在我有了这个,但是我不知道如何用迭代和递归的方式来描述树是左的。

public boolean isLeftyRecursive(BinaryTree<T> arbol){
    if (arbol.isEmpty() || arbol.isLeaf()) {
        return true;
    } else {
        if(isLeftyRecursive(arbol.getLeft()) && isLeftyRecursive(arbol.getRight())){

        }
    }return false;
}

//ISLEFTY ITERATIVE
public boolean isLeftyIterative(BinaryTree<T> arbol){
    if (this.isEmpty() || this.isLeaf()) {
        return true;
    } else {

    }return false;
}

我的二叉树定义是

BinaryTree<T>{
BinaryNode<T> root;}

我的二进制节点定义是

BinaryNode<T> { 
BinaryTree<T> left;   
BinaryTree<T> right;   
T content; }

任何关于它的想法或帮助都是非常有用的:c

vngu2lb8

vngu2lb81#

递归解决方案:

public boolean isLeftyRecursive(BinaryNode<T> tree) {
    if (tree == null)
        return true;
     if (tree.left == null || tree.right == null) {
        return tree.right == null;
    }
    return isLeftyRecursive(tree.left) && isLeftyRecursive(tree.right);
}

第二个基本条件检查左树或右树是否为空。如果right为空(不管我们的左边是否为空),我们的树就是lefty。如果right不为null,那么left应该为null(因为 if 所以我们的树不是左撇子。

相关问题