二叉查詢樹

2022-04-14 13:56:48 字數 2769 閱讀 7044

簡單來說:任意節點的根比左子樹大,比右子樹小,o(log2(n))

private class node

}

public void preorder()

/** * @param node 根據該節點往下遍歷

*/private void preorder(node node)

}

最先判斷節點是否為空,再考慮大於小於,最後才考慮等於

public node get(int key)else if(key < node.key)else 

} return null;

}

public void add(int key,int value)

while(node != null)else

//往左移

}else if(key < node.key)else

//相等替換

}else

}}

二叉查詢樹的最左節點為最小值,最右為最大值

public int max()

private node max(node node)

return node;

}public int min()

private node min(node node)

return node;

}/**

* 刪除最小節點

*/private node delmin(node node)

node.left = delmin(node.left);

return node;

}

刪除節點分三種情況

假如b為被刪節點,步驟:

/**

* 二叉查詢樹的實現

* @author howl

* @version 0.0.1

* @date 20/1/13

*/public class binarysearchtree }

/*** 先序遍歷

*/public void preorder()

/*** @param node 根據該節點往下遍歷

*/private void preorder(node node) }

/*** @param key 根據key來查詢

* @return 返回key對應的節點,沒有就返回null

*/public node get(int key)else if(key < node.key)else

} return null; }

/*** 新增節點

* @param key 鍵

* @param value 值

* @return

*/public void add(int key,int value)

while(node != null)else

//往左移

}else if(key < node.key)else

//相等替換

}else

} }

/*** 查詢最值

* @return 最值

*/public int max()

/*** 查詢最值的節點

* @param node 從該節點開始查詢

* @return 返回最值對應的節點

*/private node max(node node)

return node;

} public int min()

private node min(node node)

return node;

} /**

* 刪除最小節點

*/private node delmin(node node)

node.left = delmin(node.left);

return node; }

/*** 刪除節點

* @param key 根據key來刪除

* @return 被刪除的節點

*/public node delete(int key)

private node delete(node node,int key)else if(key < node.key)elseelse if(node.right == null)else

} return node;

}}

public static void main(string args) ;

for (int arr : arrs)

bst.delete(8);

bst.delete(13);

bst.preorder();

}

12109

711

二叉樹 二叉查詢樹

構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...

二叉樹 二叉查詢樹

二叉樹 binary tree 一種樹型結構,每個節點最多擁有兩個節點。如下圖 幾種型別的二叉樹 1.full binary tree 每個節點的孩子數 是 0 或者 2.對高度沒有要求。如下圖 2.perfect binary tree 這個就是最完美的樹,顧名思義,所有葉子節點都有相同的深度,並...

樹(樹,二叉樹,二叉查詢樹)

1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...