Loading

二叉树的前序,中序,后序遍历

class Solution {

        /**
         * 前序遍历      中 左 右
         */

        public List<Integer> preorderTraversal(TreeNode root) {
            List<Integer> result = new ArrayList<Integer>();
            preorder(root, result);
            return result;
        }

        public void preorder(TreeNode root, List<Integer> result) {
            if (root == null) {
                return;
            }
            result.add(root.val);
            preorder(root.left, result);
            preorder(root.right, result);
        }

        /**
         * 中序遍历   左 中 右
         *
         *
         */
        public  List<Integer> inorderTraversal(TreeNode root) {
          List<Integer> q1= new ArrayList<>();
          show(root,q1);
            return q1;
        }

        public  void show(TreeNode root,List<Integer> list){
            if(root == null){
                  return;
            }
            show(root.left,list);
            list.add(root.val);
            show(root.right,list);
        }


        /**
         * 后序遍历        左 右 中
         */

        public List<Integer> postorderTraversal(TreeNode root) {
            List<Integer> res = new ArrayList<>();
            postorder(root, res);
            return res;
        }

        void postorder(TreeNode root, List<Integer> list) {
            if (root == null) {
                return;
            }
            postorder(root.left, list);
            postorder(root.right, list);
            list.add(root.val);             
        }

    }


    public class TreeNode {
           int val;
           TreeNode left;
           TreeNode right;
           TreeNode() {}
           TreeNode(int val) { this.val = val; }
           TreeNode(int val, TreeNode left, TreeNode right) {
               this.val = val;
               this.left = left;
               this.right = right;
           }
       }
posted @ 2023-09-23 09:26  花园SON  阅读(2)  评论(0编辑  收藏  举报