二叉树遍历

141 阅读1分钟

这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

前序遍历:

枚举规则: 根节点 ---->左子树---->右子树

image.png

代码: 1, 递归方式

List preoderTraversal(TreeNode root){
     preorder(root);
     return list;

 }

private void preorder(TreeNode node) {
     if(node ==null){
        return;
     }
     list.add(node.val);
     list.add(node.left); 
     list.add(node.right);
}

2, 非递归方式

public List preorderTraversal(TreeNode root){
    List list =new ArrayList<>();
    Stack stack =new Stack();

    while(!stack.isEmpty()||root !=null){

        while(root!=null){
            list.add(root.val);
            stack.push(root);
            root=root.left;
        }
         root=stack.pop();
         root=root.right;

    }
}

中序遍历:

后序遍历: