今天說下二叉樹的前序遍歷凉逛,先來一顆二叉樹熟悉熟悉:
前序遍歷:先輸出該節(jié)點(diǎn)纲爸,然后輸出左孩子姨拥,然后輸出右孩子润歉。
public class Tree {
????//定義一顆樹
????public static class TreeNode{
????????int val;
????????//左孩子
????????private TreeNode left;
????????//右孩子
????????private TreeNode right;
????????TreeNode(int x){
????????????val = x;
????????}????
}
public static ListpreOrder(TreeNode root){
????????//結(jié)果
????????Listlist =new LinkedList<>();
????????//棧
????????Stackstack =new Stack<>();
????????if(root ==null){
????????????return list;
????????}
????????stack.push(root);
????????while(!stack.isEmpty()){
????????????//棧頂元素出棧
????????????TreeNode treeNode =stack.pop();
????????????list.add(treeNode.val);
????????????//左孩子是否存在
????????????if(treeNode.right!=null){
????????????????stack.push(treeNode.right);
????????????}
????????????//右孩子是否存在
????????????if(treeNode.left!=null){
????????????????stack.push(treeNode.left);
????}
}
return list;
}
public static void main(String[] args) {
????????//初始化二叉樹
? ? ? ? TreeNode root =new TreeNode(1);
????????root.left =new TreeNode(2);
????????root.right =new TreeNode(3);
????????root.left.left =new TreeNode(4);
????????root.left.right =new TreeNode(5);
????????//例如:上述初始化的二叉樹模狭,前序遍歷輸出1,2,4,5,3
? ? ? ? Listintegers =preOrder(root);
????????????System.out.println(integers);
????}
}
感謝各位老鐵閱讀,更多請關(guān)注公眾號:別明天就今天吧