package
tree;
import
java.util.List;
import
java.util.ArrayList;
import
java.io.Serializable;
public
class
TreeNode
implements
Serializable {
private
int
parentId;
private
int
selfId;
protected
String nodeName;
protected
Object obj;
protected
TreeNode parentNode;
protected
List<TreeNode> childList;
public
TreeNode() {
initChildList();
}
public
TreeNode(TreeNode parentNode) {
this
.getParentNode();
initChildList();
}
public
boolean
isLeaf() {
if
(childList ==
null
) {
return
true
;
}
else
{
if
(childList.isEmpty()) {
return
true
;
}
else
{
return
false
;
}
}
}
/* 插入一个child节点到当前节点中 */
public
void
addChildNode(TreeNode treeNode) {
initChildList();
childList.add(treeNode);
}
public
void
initChildList() {
if
(childList ==
null
)
childList =
new
ArrayList<TreeNode>();
}
public
boolean
isValidTree() {
return
true
;
}
/* 返回当前节点的父辈节点集合 */
public
List<TreeNode> getElders() {
List<TreeNode> elderList =
new
ArrayList<TreeNode>();
TreeNode parentNode =
this
.getParentNode();
if
(parentNode ==
null
) {
return
elderList;
}
else
{
elderList.add(parentNode);
elderList.addAll(parentNode.getElders());
return
elderList;
}
}
/* 返回当前节点的晚辈集合 */
public
List<TreeNode> getJuniors() {
List<TreeNode> juniorList =
new
ArrayList<TreeNode>();
List<TreeNode> childList =
this
.getChildList();
if
(childList ==
null
) {
return
juniorList;
}
else
{
int
childNumber = childList.size();
for
(
int
i =
0
; i < childNumber; i++) {
TreeNode junior = childList.get(i);
juniorList.add(junior);
juniorList.addAll(junior.getJuniors());
}
return
juniorList;
}
}
/* 返回当前节点的孩子集合 */
public
List<TreeNode> getChildList() {
return
childList;
}
/* 删除节点和它下面的晚辈 */
public
void
deleteNode() {
TreeNode parentNode =
this
.getParentNode();
int
id =
this
.getSelfId();
if
(parentNode !=
null
) {
parentNode.deleteChildNode(id);
}
}
/* 删除当前节点的某个子节点 */
public
void
deleteChildNode(
int
childId) {
List<TreeNode> childList =
this
.getChildList();
int
childNumber = childList.size();
for
(
int
i =
0
; i < childNumber; i++) {
TreeNode child = childList.get(i);
if
(child.getSelfId() == childId) {
childList.remove(i);
return
;
}
}
}
/* 动态的插入一个新的节点到当前树中 */
public
boolean
insertJuniorNode(TreeNode treeNode) {
int
juniorParentId = treeNode.getParentId();
if
(
this
.parentId == juniorParentId) {
addChildNode(treeNode);
return
true
;
}
else
{
List<TreeNode> childList =
this
.getChildList();
int
childNumber = childList.size();
boolean
insertFlag;
for
(
int
i =
0
; i < childNumber; i++) {
TreeNode childNode = childList.get(i);
insertFlag = childNode.insertJuniorNode(treeNode);
if
(insertFlag ==
true
)
return
true
;
}
return
false
;
}
}
/* 找到一颗树中某个节点 */
public
TreeNode findTreeNodeById(
int
id) {
if
(
this
.selfId == id)
return
this
;
if
(childList.isEmpty() || childList ==
null
) {
return
null
;
}
else
{
int
childNumber = childList.size();
for
(
int
i =
0
; i < childNumber; i++) {
TreeNode child = childList.get(i);
TreeNode resultNode = child.findTreeNodeById(id);
if
(resultNode !=
null
) {
return
resultNode;
}
}
return
null
;
}
}
/* 遍历一棵树,层次遍历 */
public
void
traverse() {
if
(selfId <
0
)
return
;
print(
this
.selfId);
if
(childList ==
null
|| childList.isEmpty())
return
;
int
childNumber = childList.size();
for
(
int
i =
0
; i < childNumber; i++) {
TreeNode child = childList.get(i);
child.traverse();
}
}
public
void
print(String content) {
System.out.println(content);
}
public
void
print(
int
content) {
System.out.println(String.valueOf(content));
}
public
void
setChildList(List<TreeNode> childList) {
this
.childList = childList;
}
public
int
getParentId() {
return
parentId;
}
public
void
setParentId(
int
parentId) {
this
.parentId = parentId;
}
public
int
getSelfId() {
return
selfId;
}
public
void
setSelfId(
int
selfId) {
this
.selfId = selfId;
}
public
TreeNode getParentNode() {
return
parentNode;
}
public
void
setParentNode(TreeNode parentNode) {
this
.parentNode = parentNode;
}
public
String getNodeName() {
return
nodeName;
}
public
void
setNodeName(String nodeName) {
this
.nodeName = nodeName;
}
public
Object getObj() {
return
obj;
}
public
void
setObj(Object obj) {
this
.obj = obj;
}
}
联系客服