二叉查詢樹的基本操作與實現(二叉鍊錶實現)

2021-09-03 02:39:19 字數 2341 閱讀 7679

package eureka.server.tree;

public class binarysearchtreeimplements tree

public void setroot(binarynoderoot)

@override

public string tostring() ';

}@override

public void insert(t data)

root = insertnode(data,root);

}/**

* 插入節點

* @param data

* @param p

* @return

*/private binarynodeinsertnode(t data, binarynodep)else if(result > 0)else

return p;

}/**

* 查詢最小值節點

* @param binarynode

* @return

*/private binarynodefindmin(binarynode binarynode)

return findmin(binarynode.getleftnode());

}/**

* 查詢最小值節點

* @param binarynode

* @return

*/private binarynodefindmax(binarynode binarynode)

return findmax(binarynode.getrightnode());

}/**

* 刪除節點

* @param data

* @param p

* @return

*/private binarynoderemove(t data, binarynodep)

//查詢要刪的值

int result = data.compareto(p.getdata());

//小於0,從左邊開始查詢

if(result < 0)else if(result > 0)else if(p.getrightnode() != null && p.getrightnode() != null)else

return p;

}/**

* 求樹的深度

* @return

*/public int hight()

/*** 遞迴求樹的深度

* @param node

* @return

*/public int hight(binarynodenode)else

}/**

* 求二叉平衡樹的size

** @return

*/public int size()

/*** 求二叉平衡樹的size

* 遞迴,每一層的大小等於節點的左子樹的大小加上右子樹的大小加1

** @return

*/public int size(binarynodep)else

}/**

* 先根遍歷,先遍歷根節點,再遍歷左節點,右節點

* @return

*/public string preorder()

return s;

}/**

* 先根遍歷

* @param p

* @return

*/public string preorder(binarynodep)

return sb.tostring();

}/**

* 中根遍歷,先遍歷左節點,根節點,右節點

* @return

*/private string inorder()

return s;

}/**

* 中根遍歷

* @return

*/private string inorder(binarynodep)

return sb.tostring();

}/**

* 後根遍歷,先遍歷左子樹,右子樹,根節點

* @return

*/public string postorder()

return s;

}/**

* 後根遍歷

* @param p

* @return

*/public string postorder(binarynodep)

return sb.tostring();

}public static void main(string args)

}

二叉排序樹(二叉查詢樹)的基本操作

二叉排序樹的查詢屬於動態查詢的範疇,根據查詢過程中是否對錶進行修改,可以把查詢分為靜態查詢和動態查詢。動態查詢表的特點是 表結構本身是在查詢過程中動態生成的,即對於給定的key值,若表中存在其關鍵字等於key的記錄,則查詢成功並返回,否則插入關鍵字等於key的記錄。二叉排序樹或者是一顆空樹,或者是具...

二叉查詢樹的基本操作

二叉查詢樹 對於樹中的每個節點x,它的左子樹所有關鍵字小於x的關鍵字,而右子樹的所有關鍵字大於x的關鍵字。二叉查詢樹的平均深度是o logn 二叉查詢樹的刪除操作 如果有乙個兒子,調節父節點指標繞過該節點後被刪除。如果有兩個兒子,用右子樹的最小資料代替該節點的資料,並遞迴地刪除那個節點 現在它是空的...

二叉樹 二叉查詢樹

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