二叉排序樹新增刪除節點

2021-10-01 11:03:46 字數 1079 閱讀 2312

二叉排序樹:可以很快的檢索到具體的資料。

什麼是二叉排序樹:讓左子節點的值小於父節點,右子節點的值大於父節點,這樣的二叉樹稱為二叉排序樹。

往二叉排序樹中新增節點:首先要看新增節點的父節點是否為空,在判斷新增節點的值和父節點的值的大小關係,如果小,就放在左節點,如果大就放在右節點

新增節點**:

public void add(node node) 

if(node.value二叉排序樹的刪除節點:分為三種情況,1.刪除葉子節點,2.刪除只有乙個子節點的父節點,3.刪除有左右子節點的父節點。

public void delnode(int value) else

//如果targetnode沒有父節點 二次排序樹只有乙個節點

if(root.left==null && root.right==null)

node parent=searchparent(value);

//葉子節點

if(targetnode.left==null && targetnode.right==null) else if(parent.right!=null && parent.right.value==value)

//刪除有二個子樹的子節點

}else if(targetnode.left!=null && targetnode.right==null) else else

}else else }}

} }//查詢要刪除的節點

public node search(int value) else if(valuevalue)) else if((this.right!=null && this.left.value<=value)) else

} }//刪除node為根節點的二叉樹的最小節點 返回最小節點的值

public int delrighttreemin(node node)

delnode(target.value);

return target.value;

}

二叉排序樹就主要是刪除方面比較難理解,可以嘗試畫個樹自己慢慢看。

二叉排序樹刪除節點

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 中序...

二叉排序樹刪除

二叉排序樹的刪除情況比較複雜,有以下三種情況需要考慮 第一種情況 刪除葉子節點 思路 第二種情況 刪除只有一棵子樹的節點,比如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...