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

力扣94. 二叉树的中序遍历 递归&迭代

时间:2024-02-12 15:44:06浏览次数:31  
标签:right TreeNode val 中序 力扣 二叉树 left root result

给定一个二叉树的根节点 root ,返回 它的 中序 遍历

 

示例 1:

输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

 递归

/**  * 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> inorderTraversal(TreeNode root) {         if(root == null){             return new ArrayList<>();         }         List<Integer> result = new ArrayList<>();         inTraverse(root,result);         return result;
    }     public void inTraverse(TreeNode root,List<Integer> result){         if(root == null){             return;         }         inTraverse(root.left,result);         result.add(root.val);         inTraverse(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> inorderTraversal(TreeNode root) {         if (root == null) {             return new ArrayList<>();         }         Stack<TreeNode> stack = new Stack<TreeNode>();         List<Integer> result = new ArrayList<Integer>();         while (stack.size() > 0 || root != null) {             if (root != null) {                 stack.push(root);                 root = root.left;             } else {                 TreeNode temp = stack.pop();                 result.add(temp.val);                 root = temp.right;
            }         }         return result;     } }

标签:right,TreeNode,val,中序,力扣,二叉树,left,root,result
From: https://www.cnblogs.com/JavaYuYin/p/18013938

相关文章

  • 力扣回溯 之46. 全排列
    给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。 示例1:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2:输入:nums=[0,1]输出:[[0,1],[1,0]]示例3:输入:nums=[1]输出:[[1]]importjava.......
  • 力扣回溯 深度优先搜索 dfs 之 17. 电话号码的字母组合
    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。 示例1:输入:digits="23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf&qu......
  • 力扣回溯 深度优先搜索dfs之78. 子集
    给你一个整数数组 nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。 示例1:输入:nums=[1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例2:输入:nums=[0]输出:[[],[0]] classSol......
  • 力扣递归 两道简单题合成一道中等题之148. 排序链表
    递归归并排序,先找到终点,再合并两个链表 给你链表的头结点 head ,请将其按升序排列并返回排序后的链表。 示例1:输入:head=[4,2,1,3]输出:[1,2,3,4]示例2:输入:head=[-1,5,3,4,0]输出:[-1,0,3,4,5]示例3:输入:head=[]输出:[]/** *Definitionforsingl......
  • 力扣快慢双指针之876. 链表的中间结点
    给你单链表的头结点head,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例1:输入:head=[1,2,3,4,5]输出:[3,4,5]解释:链表只有一个中间结点,值为3。示例2:输入:head=[1,2,3,4,5,6]输出:[4,5,6]解释:该链表有两个中间结点,值分别为3......
  • 代码随想录算法训练营第十六天| 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)。遍历了一遍。空间复杂度:和层数有关......
  • 力扣递归之88. 合并两个有序数组
    给你两个按非递减顺序排列的整数数组 nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初......
  • 005_二叉树
    1.用递归和非递归的方式实现二叉树的先序、中序、后序遍历先序遍历递归publicvoidpreOrderRecur(TreeNoderoot){if(root==null){return;}System.out.println(root.val+"");preOrderRecur(root.left);preOrderRecur(root.right);}......
  • 力扣递归之21. 合并两个有序链表
    将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]classSolution{publicListN......