数据结构与算法-树
sdusgq
这个作者很懒,什么都没留下…
展开
-
数组-给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序
一、思路不以零为主角,以非零为主角;用双指针,非零和零换位置;一个索引指向非零元素,另一个指针指向最靠近左边的零;二、官方思路左指针左边均为非零数;右指针左边直到左指针处均为零;循环终止的条件是什么?左指针索引 = 非零元素个数 - 1;右指针索引 = 元素总个数 - 1指针如何更新?本题代码具有巧妙性;每个被右指针遍历到的非零元素都要进行位置调换,自己和自己调换也是调换;(这个初学者很难想到)三、代码/*给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保原创 2020-12-17 07:59:04 · 1590 阅读 · 0 评论 -
树-路径和的迭代写法和递归写法
一、迭代写法队列1:存放当前遍历到的节点;队列2:对应队列1存放的节点的路径和;cur :队列1取出来的当前节点temp:队列2取出来的,队列1当前节点的路径和;import java.util.LinkedList;import java.util.Queue;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} TreeNode(i原创 2020-12-14 16:15:32 · 205 阅读 · 0 评论 -
树-对称二叉树的学习
一、思路对称二叉树有两种写法:迭代法和递归法;两种方法都运用了双指针;个人认为迭代法更好理解一些;写出了迭代之后,写出递归相对容易了一些;递归最重要的是终止条件;二、迭代写法import java.util.LinkedList;import java.util.Queue;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} Tr原创 2020-12-14 10:14:16 · 82 阅读 · 1 评论 -
树-求最大深度的层序遍历解法
import java.util.LinkedList;import java.util.Queue;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) {原创 2020-12-13 09:34:30 · 349 阅读 · 0 评论 -
树-自顶向下思路和自底向上思路求树的最大深度
import static sun.swing.MenuItemLayoutHelper.max;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) {原创 2020-12-12 21:52:50 · 441 阅读 · 0 评论 -
树-求树的最大深度之递归写法
class MaxiumDepth { private int answer; // don't forget to initialize answer before call maximum_depth public int getAnswer() { return answer; } public void setAnswer(int answer) { this.answer = answer; } public原创 2020-12-12 15:28:02 · 206 阅读 · 0 评论 -
树-层序遍历的迭代写法
import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} TreeNode(int val) { this.val = val; }原创 2020-12-12 10:07:44 · 290 阅读 · 1 评论 -
树-后序遍历的迭代写法
import java.util.ArrayList;import java.util.Deque;import java.util.LinkedList;import java.util.List;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} TreeNode(int val) { this.val = val; }原创 2020-12-11 16:15:22 · 147 阅读 · 0 评论 -
树-后续遍历的递归实现
import java.util.ArrayList;import java.util.Deque;import java.util.LinkedList;import java.util.List;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} TreeNode(int val) { this.val = val; }原创 2020-12-11 10:55:46 · 138 阅读 · 0 评论 -
树-中序遍历的迭代写法
import java.util.ArrayList;import java.util.Deque;import java.util.LinkedList;import java.util.List;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} TreeNode(int val) { this.val = val; }原创 2020-12-10 10:17:56 · 216 阅读 · 0 评论 -
树-中序遍历之递归写法
import java.util.ArrayList;import java.util.List;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) {原创 2020-12-09 21:37:42 · 202 阅读 · 0 评论 -
树-前序遍历之迭代写法
import java.util.ArrayList;import java.util.Deque;import java.util.LinkedList;import java.util.List;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} TreeNode(int val) { this.val = val; }原创 2020-12-09 15:43:30 · 189 阅读 · 0 评论 -
树-前序遍历之递归写法
一、前序遍历的函数实现import java.util.ArrayList;import java.util.List;class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode原创 2020-12-09 15:10:03 · 337 阅读 · 0 评论