針對樹這一數據結構的遍歷問題主要有四種,前序遍歷、中序遍歷、後序遍歷、層序遍歷,今天我們主要說明一下前序、中序、後序的遞歸方式代碼模板。
前序遍歷
前序遍歷可以理解爲向前遍歷,也就是遍歷時,時刻保持節點輸出順序爲(根-左-右)。
public List<Integer> qiangxu(TreeNode root, List list) {
if (root == null) return list;
list.add(root.val);//根
qiangxu(root.left,list);//左
qiangxu(root.right,list);//右
return list;
}
中序遍歷
中序遍歷可以理解爲向中遍歷,也就是遍歷時,時刻保持節點輸出順序爲(左-根-右),注意二叉搜索樹中序遍歷一定是遞增的
//二叉搜索樹中中序遍歷一定是遞增的
public List<Integer> zhongxu(TreeNode root, List list) {
if (root == null) return list;
zhongxu(root.left,list);//左
list.add(root.val);//根
zhongxu(root.right,list);//右
return list;
}
後序遍歷
後序遍歷可以理解爲向後遍歷,也就是遍歷時,時刻保持節點輸出順序爲(左-右-根)
public List<Integer> houxu(TreeNode root, List list) {
if (root == null) return list;
houxu(root.left,list);//左
houxu(root.right,list);//右
list.add(root.val);//根
return list;
}
遍歷入口
public List<Integer> treeInter(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
return zhongxu(root,list);
return houxu(root,list);
return qianxu(root,list);
}