對於二叉樹而言,我們首先應當知曉的知識就是二叉樹的遍歷。
首先,二叉樹遍歷有前中後三種遍歷方法,在遞迴版中,前序遍歷就是第一次遇到該節點就列印,中序遍歷就是第二次遇到列印該節點,後續遍歷就是第三次遇到該節點列印。
遞迴實質是系統幫助我們壓棧,儲存現場資訊,而非遞迴就需要我們自己來壓棧。
二叉樹結構:
public static class node遞迴版前序遍歷:}
public static void preorderrecur(node head)遞迴版中序遍歷:system.out.print(head.value + " ");
preorderrecur(head.left);
preorderrecur(head.right);
public static void inorderrecur(node head)遞迴版後序遍歷:inorderrecur(head.left);
system.out.print(head.value + " ");
inorderrecur(head.right);
}
public static void posorderrecur(node head)非遞迴版前序遍歷:posorderrecur(head.left);
posorderrecur(head.right);
system.out.print(head.value+ " ");
}
public static void preorderunrecur(node head)非遞迴版中序遍歷:stackstack = new stack();
stack.add(head);
while (!stack.isempty())
if (head.left != null)
}system.out.println();
}
public static void inorderunrecur(node head)非遞迴版後序遍歷:stackstack = new stack();
while (!stack.isempty() || head != null)else
}system.out.println();
}
public static void posorderunrecur(node head)main函式if(head != null)
if (head.right != null)
}while (!stack1.isempty())
}}
前 中 後序遍歷非遞迴演算法
前中後序的差異在於節點訪問的時序。前序遍歷的根節點訪問在遍歷左子樹的同時就可以完成,實際上前序遍歷並不僅僅是訪問根節點。同時,它還訪問了結點的左孩子結點,也就是孩子結點是相對於雙親結點來說的,訪問了該節點也就是訪問了其雙親結點的左孩子結點,剩下的工作就是完成右孩子結點的訪問。這時候也是將左節點和根節...
二叉樹的前 中 後序遍歷(遞迴與非遞迴)
常見的二叉樹的遍歷有三種方式 前序遍歷 根節點,左子樹,右子樹 中序遍歷 左子樹,根節點,右子樹 後序遍歷 左子樹,右子樹,根節點 每種方式都可以用遞迴和非遞迴來實現 一 遞迴遍歷 1.先序遍歷 先訪問根節點,再訪問左子樹,左子樹訪問完之後,訪問右子樹 void btreeprevorder btn...
二叉樹的前中後序遍歷(遞迴與非遞迴)
bst樹的節點型別 param class bstnode public t getdata public void setdata t data public bstnodegetleft public void setleft bstnodeleft public bstnodegetright...