Leetcode316.去除重複字母
阿新 • • 發佈:2020-12-20
概念
二叉樹的遍歷有 先序、中序、後續遍歷
- 先序遍歷
當前節點 - 左子節點 - 右子節點
a-b-d-e-c-f - 中序遍歷
左子節點 - 當前節點 - 右子節點
d-b-e-a-f-c - 後續遍歷
左子節點 - 右子節點 - 當前節點
d-e-b-f-c-a
遞迴方式遍歷
這種方式比較簡單
// 先序遍歷 public static List visitBefore(BinaryNode root) { List list = new ArrayList<>(); if (root == null) { return new ArrayList<>(); } list.add(root.getData()); // 遍歷左子樹 list.addAll(visitBefore(root.getLeft())); // 遍歷右子樹 list.addAll(visitBefore(root.getRight())); return list; } // 中序遍歷 public static List visitMiddle(BinaryNode root) { List list = new ArrayList<>(); if (root == null) { return new ArrayList<>(); } // 遍歷左子樹 list.addAll(visitMiddle(root.getLeft())); list.add(root.getData()); // 遍歷右子樹 list.addAll(visitMiddle(root.getRight())); return list; } // 後序遍歷 public static List visitAfter(BinaryNode root) { List list = new ArrayList<>(); if (root == null) { return new ArrayList<>(); } // 遍歷左子樹 list.addAll(visitAfter(root.getLeft())); // 遍歷右子樹 list.addAll(visitAfter(root.getRight())); list.add(root.getData()); return list; }