struct node};
class
bstelse
}else
//插入到root的左子樹
else
}return root_node;
}else
} node *
insert2tree
(node * root_node,
int val)
//刪除節點base,並返回根節點
node *
deletenode
(node *
const root, node *
const base, node *
& del)
if(base-
>left ==
nullptr
&& base-
>right ==
nullptr)if
(base-
>father-
>left == base)
else
}else
if(base-
>left ==
nullptr
&& base-
>right !=
nullptr)if
(base-
>father-
>left == base)
else
}else
if(base-
>left !=
nullptr
&& base-
>right ==
nullptr)if
(base-
>father-
>left == base)
else
}else
if(base-
>left !=
nullptr
&& base-
>right !=
nullptr)}
node *
deletenode
(node * base)
//中序遍歷
void
midforeach
(node * root)
midforeach
(root-
>left)
; cout << root-
>val <<
",";
midforeach
(root-
>right);}
//前序遍歷
void
preforeach
(node * root)
cout << root-
>val <<
",";
preforeach
(root-
>left)
;preforeach
(root-
>right);}
//後序遍歷
void
postforeach
(node * root)
postforeach
(root-
>left)
;postforeach
(root-
>right)
; cout << root-
>val <<
",";
}//層次遍歷
void
levelforeach
(node * root)
std::queue> que;
que.
push
(root)
;while
(!que.
empty()
)if(the_node-
>right)
} cout << endl;
}//找最小值節點
node *
minimum
(node * root)
if(root-
>left ==
nullptr
)return
minimum
(root-
>left);}
//找最大值節點
node *
maximum
(node * root)
if(root-
>right ==
nullptr
)return
maximum
(root-
>right);}
//找指定值的節點
node *
search
(node * root,
int val)
if(root-
>val > val)
if(root-
>val < val)
return root;
}//查詢前驅節點
node *
findpredecessor
(node * base)
if(base-
>left !=
nullptr
)else
if(base-
>father ==
nullptr
) base = base-
>father;}}
}//查詢後繼節點
node *
findsuccessor
(node * base)
if(base-
>right !=
nullptr
)else
if(base-
>father ==
nullptr
) base = base-
>father;}}
}//通過任意節點查詢樹的根
node *
findroot
(node * tree_node)
else
}//釋放節點記憶體
void
freenode
(node * base)
}void
movenodedata
(node * src_node, node * dst_node)
};
C 實現二叉查詢樹
樹是一種非線性結構。樹的本質是將一些節點由邊連線起來,形成層級的結構。而二叉樹是一種特殊的樹,使得樹每個子節點必須小於等於2.而二叉查詢樹又是一類特殊的二叉樹。使得每乙個節點的左節點或左子樹的所有節點必須小於這個節點,右節點必須大於這個節點。從而方便高效搜尋。下面來看如何使用c 實現二叉查詢樹。二叉...
二叉查詢樹,實現
public class binarytree 移除乙個節點 分三種情況,乙個是 該節點本身是葉子,乙個是 該節點含有乙個兒子節點 乙個是 該節點還有兩個兒子節點 param e param comareelement private binarynoderemove element e,binar...
二叉查詢樹的實現
因為在關聯容器裡面主要的內部結構是rb tree,而紅黑樹又是一種平衡二叉樹,平衡二叉樹又是屬於二叉查詢樹,所以按照 侯捷介紹的順序依次來實現,今天先把二叉查詢樹這種最簡單的實現掉 首先,二叉查詢樹 不像heap中完全二叉樹那樣記憶體分配用線性儲存的,二叉查詢樹一般內部儲存是通過鍊錶來實現的,首先來...