非線性結構 普通樹的兩種實現方式

2021-06-13 07:32:18 字數 2105 閱讀 3163

第一種:子節點搜尋父節點方式

class treeparent

public node(t data)

public node(t data, int parent)

@override

public string tostring()

}// 預設樹的大小

private final int def_tree_size = 100;

private int treesize = 0;

private node nodes;// 記錄樹中所有節點

private int nodenums;// 記錄節點數

// 以指定根節點建立樹

public treeparent(e data)

// 以指定根節點、指定treesize建立樹

public treeparent(e data, int treesize)

// 為指定根節點新增子節點

public void addnode(e data, node parent)}}

// 返回指定節點的索引

private int pos(node node)

// 判斷樹是否為空

public boolean empty()

// 返回根節點

public node root()

// 返回指定節點(非根節點)的父節點

public node parent(node node)

// 返回指定節點的所有子節點

public list> children(node parent)

return list;

}// 返回該樹的深度

public int deep()

if (max < def)

max = def;

}return max;

}public static void main(string args)

第二種實現

/*** 採用子節點鏈表示法記錄樹,每個節點維護乙個子節點鏈,通過子節點鏈記錄該節點的所有子節點

* * @author mk

* * @param

*/class treechild

private static class sonnode

}public static class node

@override

public string tostring()

}private final int def_tree_size = 100;

private int treesize;

private node nodes;// 記錄節點陣列

private int nodenums;// 記錄節點數

// 以指定根節點建立樹

public treechild(e data)

// 以指定根節點指定treesize建立樹

public treechild(e data, int treesize)

// 為指定節點新增子節點

public void addnode(e data, node parent)}}

}// 判斷節點是否為空

public boolean empty()

// 返回根節點

public node root()

// 返回指定節點的(非葉子節點)所有子節點

public list> children(node parent)

return list;

}// 返回指定節點的(非葉子節點)index處的節點

public nodechild(int index, node parent)

*/for (int i = 0; next != null; i++)

return null;

}// 返回該樹的深度

public int deep()

// 遞迴呼叫,每樹的深度為其所有子樹的最大深度+1

private int deep(node node)

return max + 1;

}// 返回節點索引

public int pos(node node)

}

redis hash 結構實現的兩種方式

壓縮列表是 redis 資料型別為 list 和 hash 的底層實現之一。壓縮列表是 redis 為了節約記憶體而開發的,它是由連續記憶體塊組成的順序型資料結構,有點類似於陣列。壓縮列表除了查詢複雜度高的問題,壓縮列表在插入元素時,如果記憶體空間不夠了,壓縮列表還需要重新分配一塊連續的記憶體空間,...

Python實現樹結構的兩種方式

1 實現樹結構的列表方法是 巢狀列表法 這裡把我踩的坑記錄一下 使用巢狀列表法實現樹的基本功能 def binarytree r return r,def insertleft root,newbranch t root.pop 1 iflen t 1 如果左子樹非空,就把原來根節點上的左子樹作為新...

兩種方式實現checkBox readonly功能

今天在做開發的時候遇到了這樣乙個問題 有乙個checkbox選項是不能被改變的。但是checkbox又是沒有readonly屬性的,這個時候我就想到了另外乙個屬性disabled,但是disabled的物件是不能提交到後台的,所以這個又被排除掉了。想了想,只能新增事件來搞定了。於是在checkbox...