Java 如何检查树是否完整?
这是我的二叉搜索树类:Java 如何检查树是否完整?,java,recursion,binary-search-tree,Java,Recursion,Binary Search Tree,这是我的二叉搜索树类: public class BinarySearchTree { class BSTNode { int data; BSTNode rchild; BSTNode lchild; //constructor public BSTNode(int n){
public class BinarySearchTree {
class BSTNode {
int data;
BSTNode rchild;
BSTNode lchild;
//constructor
public BSTNode(int n){
data=n;
lchild=rchild=null;
}
}
private BSTNode root;
private int size;
public BinarySearchTree() {
root = null;
size = -1;
}
public boolean insert(int n) {
if (root == null)
root = new BSTNode(n);
else
insert(n, root);
return true;
}
private void insert(int n, BSTNode r) {
if (r.data > n)
if (r.lchild == null)
r.lchild = new BSTNode(n);
else
insert(n, r.lchild);
else
if (r.data < n)
if (r.rchild == null)
r.rchild = new BSTNode(n);
else
insert(n, r.rchild);
}
}
公共类二进制搜索树{
类节点{
int数据;
bstld;
BSTLchild;
//建造师
公共节点(int n){
数据=n;
lchild=rchild=null;
}
}
私有节点根;
私有整数大小;
公共二进制搜索树(){
root=null;
大小=-1;
}
公共布尔插入(int n){
if(root==null)
根=新节点(n);
其他的
插入(n,根);
返回true;
}
专用void插入(int n,bstr节点){
如果(r.data>n)
if(r.lchild==null)
r、 lchild=新节点(n);
其他的
插入(n,r.lchild);
其他的
如果(r.数据
实际上,我发现编写一个方法来检查我的树是否是一个完整的二叉树有困难。有人能给我提供解决方案吗
我将遵循这一定义:
完整二叉树:除最后一级外,所有级别都已完全填充,所有节点都保持对齐。您必须对其进行一些修改,以实现
BSTNode
,但我相信这应该符合您的需要。基本思想是递归遍历树,并确保每个子树都满足“complete”属性
boolean checkBinaryTreeCompleteness(TreeNode root) {
if (root != null) {
if (root.right == null && root.left == null) {
return true;
}
if (root.right != null && root.left != null) {
return checkBinaryTreeCompleteness(root.left) && checkBinaryTreeCompleteness(root.right);
}
}
return false;
}
为了实现
BSTNode
,您必须对此进行一些修改,但我相信这应该适合您的需要。基本思想是递归遍历树,并确保每个子树都满足“complete”属性
boolean checkBinaryTreeCompleteness(TreeNode root) {
if (root != null) {
if (root.right == null && root.left == null) {
return true;
}
if (root.right != null && root.left != null) {
return checkBinaryTreeCompleteness(root.left) && checkBinaryTreeCompleteness(root.right);
}
}
return false;
}
欢迎来到这个网站!到目前为止你都尝试了什么?欢迎来到这个网站!到目前为止你试过什么?