二叉树名词
- 满二叉树
树的每一层的节点个数都达到了当层最大。 - 完全二叉树
任何一个编号为x的节点,其左孩子编号一定为2x,右孩子一定为2x+1.
二叉树遍历
- 二叉树三种遍历顺序
前序:中-左-右
中序:左-中-右
后序:左-右-中 - 二叉树的递归遍历
以前序为例:
void front(node root){
print(root->num);
front(root->lc);
front(root->rc);
}
- 二叉树的非递归遍历
1)前序:
用辅助栈,root入栈->root出栈->rc入栈->rc出栈
void front(node root){
stack<node>list;
list.push(root);
while(!list.empty()){
node t=list.top();
print(t.num);
list.pop();
if(t.rc){
list.push(t.rc);
};
if(t.lc){
list.push(t.lc);
};
};
}
或者用dfs。
2)中序
使用辅助栈,一路向左将节点压至栈中直至叶子节点,再输出。
void mid(node root){
stack<node