Java 需要递归算法来搜索所有BST
试图想出一个算法来访问BST中的每个节点,并对每个节点进行比较以找到最大的int值,我的BST是不平衡的,按字母顺序排序,但有int值,我需要在树中找到最大的int值 我的代码是:Java 需要递归算法来搜索所有BST,java,recursion,binary-search-tree,Java,Recursion,Binary Search Tree,试图想出一个算法来访问BST中的每个节点,并对每个节点进行比较以找到最大的int值,我的BST是不平衡的,按字母顺序排序,但有int值,我需要在树中找到最大的int值 我的代码是: private Object Mode(BinaryTreeNode root) { if (root == null) { return null; } Object left = root.getElement(); Object right = root.get
private Object Mode(BinaryTreeNode root) {
if (root == null) {
return null;
}
Object left = root.getElement();
Object right = root.getElement();
if (root.getLeftChild() != null) {
Object leftEle = root.getLeftChild().getElement();
if (left.data < leftEle.data) {
left = Mode(root.getLeftChild());
}
}
if (root.getRightChild() != null) {
Object rightEle = root.getRightChild().getElement();
if (right.data < rightEle.data) {
right = Mode(root.getRightChild());
}
}
if(left.data > right.data){
return left;
}
return right;`
}
私有对象模式(二进制树节点根){
if(root==null){
返回null;
}
objectleft=root.getElement();
Object right=root.getElement();
if(root.getLeftChild()!=null){
Object leftEle=root.getLeftChild().getElement();
if(left.dataright.data){
左转;
}
返还权`
}
我知道当方法调用从堆栈中弹出时会发生比较,但我不确定是否最终检查了所有节点,因为BST没有按数据排序,所以需要遍历每个节点并在它们之间进行比较。删除那些复选框
right.data
和left.data
,这将限制搜索空间。我还没有编译你的代码。应该是这样的:
private Object Mode(BinaryTreeNode root) {
if (root == null) {
return null;
}
Object left = root.getElement();
Object right = root.getElement();
if (root.getLeftChild() != null) {
Object leftEle = root.getLeftChild().getElement();
left = Mode(root.getLeftChild());
}
if (root.getRightChild() != null) {
Object rightEle = root.getRightChild().getElement();
right = Mode(root.getRightChild());
}
if(left != null ){
if(right != null)
if(left.data < right.data
return right;
return left;
}
return right;
}
私有对象模式(二进制树节点根){
if(root==null){
返回null;
}
objectleft=root.getElement();
Object right=root.getElement();
if(root.getLeftChild()!=null){
Object leftEle=root.getLeftChild().getElement();
左=模式(root.getLeftChild());
}
如果(root.getRightChild()!=null){
对象rightEle=root.getRightChild().getElement();
右=模式(root.getRightChild());
}
if(左!=null){
if(右!=null)
如果(左数据<右数据
返还权;
左转;
}
返还权;
}
如果您可以放置一些(格式化)代码在您的描述中,这里的人可能会更好地帮助您解决语法问题。您的psuedo代码非常准确,并且正确地使用了递归。@MileHigh您能详细说明一下这一点吗我的BST不平衡,按字母顺序排序,但带有int值
。整数值和d角色?