樹:Java中前序遍歷中序遍歷後序遍歷

針對樹這一數據結構的遍歷問題主要有四種,前序遍歷、中序遍歷、後序遍歷、層序遍歷,今天我們主要說明一下前序、中序、後序的遞歸方式代碼模板。

前序遍歷

前序遍歷可以理解爲向前遍歷,也就是遍歷時,時刻保持節點輸出順序爲(根-左-右)。

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);
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章