算法与数据结构笔记(二)二叉树遍历
二叉树的遍历
前序遍历
前序遍历(先序遍历)即先访问根节点,再访问左子树,最后访问右子树的顺序
递归实现前序遍历
function Preorder(node){
if(node==NULL){
return;
}
print(node.data);
Preorder(node.left);
Preorder(node.right);
}
由于前序遍历先访问根节点,所以前序遍历又被称为先根遍历。
中序遍历
中序遍历即先访问左子树,再访问根节点,最后访问右子树的顺序
递归实现中序遍历
function Inorder(node){
if(node==NULL){
return;
}
Inorder(node.left);
print(node.data);
Inorder(node.right);
}
由于中序遍历在中间访问根节点,所以中序遍历又被称为中根遍历。
后序遍历
后序遍历即先访问左子树,再访问右子树,最后访问根节点的顺序
递归实现后序遍历
function Postorder(node){
if(node==NULL){
return;
}
Postorder(node.left);
Postorder(node.right);
print(node.data);
}
由于后序遍历在最后访问根节点,所以后序遍历又被称为后根遍历。
层序遍历
层序遍历即按层访问树的元素。
迭代+队列是实现层序遍历
function LineOrder(root,queue){
queue.put(root):
while(queue.notEmpty()){
node = queue.get();
printf(node.data);
child = node.children;
while(child!=NULL){
queue.put(child);
child = child.next;
}
}
}