标签:二叉查找树 时间 ddn arch 数据结构 中序 sea 找不到 void
二叉搜索树(BST)又称为二叉查找树、二叉排序树。
二叉搜索树首先是一棵二叉树;
对任意节点,如果其左子树不为空,则左子树上任意节点的值均不大于它的根节点的值;
如果其右子树不为空,则右子树上任意节点的值均不大于它的根节点的值;
任意节点的左右子树也分别是二叉搜索树。
中序遍历二叉搜索树,得到的结果是有序的数据列。
// 中序遍历二叉搜索树,结果是排好序的数据
public void midOrder(TreeNode node){
if(node == null){
return;
}
midOrder(node.getLeft());
System.out.print(node.getKey() + " ");
midOrder(node.getRight());
}
二叉搜索树添加的新节点总是成为叶子节点。
// 添加节点构造二叉搜索树
public TreeNode addNode(TreeNode node, int key){
// 如果不存在则创建节点,否则直接返回
if(node == null){
node = new TreeNode(key);
}
if(key < node.getKey()){
node.setLeft(addNode(node.getLeft(), key));
}else if(key > node.getKey()){
node.setRight(addNode(node.getRight(), key));
}else{
return node;
}
return node;
}
需要遍历二叉搜索树,时间复杂度取决于遍历的深度。
// 查找某个节点,时间复杂度为走过的层数,最坏为O(H)
public TreeNode searchNode(TreeNode node, int key){
// 如果找不到返回null,找到则直接返回
if(node == null || node.getKey() == key){
return node;
}else if(key < node.getKey()){
return searchNode(node.getLeft(), key);
}else{
return searchNode(node.getRight(), key);
}
}
标签:二叉查找树 时间 ddn arch 数据结构 中序 sea 找不到 void
原文地址:https://www.cnblogs.com/pycrab/p/9886356.html