/**
* @description 二叉排序樹的節點
* @auther eleven
* @create 2020-04-09 20:43
**/public
class
node
//新增方法
public
void
add(node node)if(
this
.value>node.value)
else
}else
else}}
//中序遍歷
public
void
midprint
(node root)
midprint
(root.left)
; system.out.
println
(root.value)
;midprint
(root.right);}
//查詢節點
public node searchnode
(node node)
elseif(
this
.value>node.value)
else
}public
void
deletenode
(node node)
/** * 查詢父節點
* @param node
* @return
*/public node searchparent
(node node)
else
elseif(
this
.right!=null &&
this
.valuereturn null;}}
}
/**
* @description 二叉排序樹
* @auther eleven
* @create 2020-04-09 20:43
**/public
class
binarysorttree
else
}public
void
midprint()
}public node searchnode
(node node)
else
}/**
* 刪除節點
* @param node
*/public
void
deletenode
(node node)
else
//找到這個節點的父節點
node parent =
searchparent
(node)
;//刪除葉子節點
if(target.left==null && target.right==null)
else
}else
if(target.left!=null && target.right!=null)
else
else
}else
else}}
}}/** * 找一顆數中的最小節點
* @param node
* @return
*/private node findminnode
(node node)
//刪除最小節點
deletenode
(target)
;return target;
}/**
* 搜尋父節點
* @param node
* @return
*/public node searchparent
(node node)
else
}}
public
static
void
main
(string[
] args)
;for
(int i:arr)
binarysorttree.
midprint()
;// system.out.println(binarysorttree.searchnode(new node(1)).value);
system.out.
println
("--------------------");
binarysorttree.
deletenode
(new
node(3
)); binarysorttree.
midprint()
;}
二叉排序樹新增刪除節點
二叉排序樹 可以很快的檢索到具體的資料。什麼是二叉排序樹 讓左子節點的值小於父節點,右子節點的值大於父節點,這樣的二叉樹稱為二叉排序樹。往二叉排序樹中新增節點 首先要看新增節點的父節點是否為空,在判斷新增節點的值和父節點的值的大小關係,如果小,就放在左節點,如果大就放在右節點 新增節點 public...
二叉排序樹刪除
二叉排序樹的刪除情況比較複雜,有以下三種情況需要考慮 第一種情況 刪除葉子節點 思路 第二種情況 刪除只有一棵子樹的節點,比如1 思路 如果targetnode有右子節點 第三種情況 刪除有兩棵子樹的節點 比如 7,3,10 思路 public class binarysorttreedemo bi...
構造二叉排序樹(BST) 二叉排序樹的刪除
主要是刪除操作 include include using namespace std typedef int elementtype typedef struct treenode threadtree void visit treenode node void inorder threadtre...