首页 > 其他分享 >力扣 144. 二叉树的前序遍历 递归 迭代

力扣 144. 二叉树的前序遍历 递归 迭代

时间:2024-02-12 16:00:11浏览次数:19  
标签:144 right TreeNode val 前序 二叉树 left root result

递归

/**  * Definition for a binary tree node.  * 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;  *     }  * }  */ class Solution {     public List<Integer> preorderTraversal(TreeNode root) {         // 递归三要素         List<Integer> result = new ArrayList<>();         preoder(root,result);         return result;     }     // 1.入参,返回值     void preoder(TreeNode root,List<Integer> result){         // 2.出栈条件         if(root == null){             return;         }         // 前序遍历,中--左--右         // 3.单层执行递归逻辑         result.add(root.val);         preoder(root.left,result);         preoder(root.right,result);     } } 迭代   /**  * Definition for a binary tree node.  * 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;  *     }  * }  */ class Solution {     public List<Integer> preorderTraversal(TreeNode root) {         // 迭代         List<Integer> result = new ArrayList<>();         Stack<TreeNode> stack = new Stack<TreeNode>();         while(stack.size()>0 || root != null){             if(root!=null){                 result.add(root.val);                 stack.push(root);                 root = root.left;             }else{                 TreeNode temp = stack.pop();                 root = temp.right;             }         }         return result;     } }

标签:144,right,TreeNode,val,前序,二叉树,left,root,result
From: https://www.cnblogs.com/JavaYuYin/p/18013947

相关文章

  • 力扣94. 二叉树的中序遍历 递归&迭代
    给定一个二叉树的根节点root,返回它的中序 遍历。 示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1] 递归/** *Definitionforabinarytreenode. *publicclassTreeNode{ *  intval;......
  • 代码随想录算法训练营第十六天| 104.二叉树的最大深度 559.n叉树的最大深度 111.二
    104.二叉树的最大深度  题目链接:104.二叉树的最大深度-力扣(LeetCode)n叉树也一样思路:我的普通递归方法classSolution{public:intdepth(TreeNode*node,intd){intl=0,r=0;if(node->left==NULL&&node->right==NULL)returnd;if(node-......
  • (16/60)二叉树最大深度、最小深度、完全二叉树结点个数
    终于熬到了春节假~~有些手感了深度与高度深度是从根结点到叶结点的距离;高度是从叶结点到根结点的距离。深度从上往下(根为1);高度从下往上(叶为1)。二叉树最大深度leetcode:104.二叉树的最大深度后序递归法思路复杂度分析时间复杂度:O(N)。遍历了一遍。空间复杂度:和层数有关......
  • 005_二叉树
    1.用递归和非递归的方式实现二叉树的先序、中序、后序遍历先序遍历递归publicvoidpreOrderRecur(TreeNoderoot){if(root==null){return;}System.out.println(root.val+"");preOrderRecur(root.left);preOrderRecur(root.right);}......
  • (15/60)层序遍历、翻转二叉树、对称二叉树
    层序遍历leetcode:102.二叉树的层序遍历107.二叉树的层序遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针104.二叉树的最大深度111.二叉树的最小深度102.二叉树的层序遍......
  • 代码随想录算法训练营第十五天| 层序遍历 10 226.翻转二叉树 101.对称二叉树 2
    层序遍历  102.二叉树的层序遍历-力扣(LeetCode)思路:结合了昨天学到的标记法,每当一层遍历完,向队列中添加一个NULL标记。遍历到NULL节点表示该层遍历完了,将结果存入结果集中。/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNo......
  • P2585 [ZJOI2006] 三色二叉树
    原题链接总结1.要学会动态规划这种思维方式,即定义状态和状态之间的转移2.本题的难点在于如何将抽象的输入数据转换成树状结构处理和定义状态,这个定义状态让我想到了初中添加几何线,可能要多做题才能有感觉吧3.有一定模拟的部分,这一部分要细心\(Code\)#include<bits/stdc++.h>......
  • CF1446C Xor Tree 题解
    解题思路与其考虑删除哪些点,不如考虑保留哪些点。考虑到和异或有关,那么我们可以把这些数倒序插入trie树中,然后我们就可以在trie树上跑一个简单的dp:若当前节点为叶子节点,那么保留,返回\(1\);若当前节点在链上,那么直接继承儿子节点;若当前节点有两个儿子,那么更新为较大儿子......
  • (14/60)二叉树理论基础、递归遍历、迭代遍历、统一迭代
    二叉树理论基础分类满二叉树:只有度为0和度为2的结点,且度为0结点在同一层上(每一层的结点都是满的)。完全二叉树:除了底层外其他层结点都是满的(底层当然也可以是满的),且底层结点从左往右连续不断。二叉搜索树:树的每个结点满足:左子树所有结点值均小于根结点的值右子树所有......
  • 代码随想录算法训练营第十四天 | 94. 二叉树的中序遍历,144.二叉树的前序遍历,145.二叉
    145.二叉树的后序遍历 已解答简单 相关标签相关企业 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例1:输入:root=[1,null,2,3]输出:[3,2,1]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1] 提示:树中节点......