非遞歸遍歷二叉樹借用 List 實現的,具體實現方法以下。
前序遍歷非遞歸代碼實現:ide
public List<Integer> preOrder(TreeNode root) { List<Integer> list = new ArrayList<>(); if (root == null) { return list; } list.add(root.val);//根據前序遍歷的特性,先將根節點的值加入到 List 中 list.addAll(preOrder(root.left));//再遍歷根節點的左子樹並放入 List 中 list.addAll(preOrder(root.right));//最後遍歷根節點的右子樹並將值放入 List 中 return list; }
中序遍歷非遞歸代碼實現:code
public List<Integer> inOrder(TreeNode root) { List<Integer> list = new ArrayList<>(); if (root == null) { return list; } list.addAll(inOrder(root.left)); list.add(root.val); list.addAll(inOrder(root.right)); return list; }
後序遍歷非遞歸代碼實現:遞歸
public List<Integer> posOrder(TreeNode root) { List<Integer> list = new ArrayList<>(); if (root == null) { return list; } list.addAll(posOrder(root.left)); list.addAll(posOrder(root.right)); list.add(root.val); return list; }