<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liransd的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/liransd</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liransd]]></copyright><item><title><![CDATA[二叉树的前序遍历]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/71075903</link><guid>https://blog.youkuaiyun.com/liransd/article/details/71075903</guid><author>liransd</author><pubDate>Mon, 01 May 2017 22:27:34 +0800</pubDate><description><![CDATA[一、问题描述
给出一棵二叉树，返回其节点值的前序遍历。

二、样例


给出一棵二叉树 {1,#,2,3},
   1
    \
     2
    /
   3


 返回 [1,2,3].
三、思路
在函数外重新定义一个前序遍历函数，在另一个函数中调用，在写前序遍历的函数时，运用递归。

四、代码
/**
 * Definition of TreeNode:]]></description><category></category></item><item><title><![CDATA[二叉树的路径和]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/71075715</link><guid>https://blog.youkuaiyun.com/liransd/article/details/71075715</guid><author>liransd</author><pubDate>Mon, 01 May 2017 22:00:01 +0800</pubDate><description><![CDATA[一、问题描述


给定一个二叉树，找出所有路径中各节点相加总和等于给定 目标值 的路径。

一个有效的路径，指的是从根节点到叶节点的路径。
二、样例


给定一个二叉树，和 目标值 = 5:
     1
    / \
   2   4
  / \
 2   3


返回：
[
  [1, 2, 2],
  [1, 4]
]
三、思路
对每条路径进行加和，与给定的值]]></description><category></category></item><item><title><![CDATA[二叉树的最小深度]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/71057254</link><guid>https://blog.youkuaiyun.com/liransd/article/details/71057254</guid><author>liransd</author><pubDate>Mon, 01 May 2017 18:36:49 +0800</pubDate><description><![CDATA[一、问题描述


给定一个二叉树，找出其最小深度。

二叉树的最小深度为根节点到最近叶子节点的距离。
二、样例


给出一棵如下的二叉树:

        1

     /     \ 

   2       3

          /    \

        4      5  

这个二叉树的最小深度为 2

三、思路

首先是空树]]></description><category></category></item><item><title><![CDATA[把排序数组转换为高度最小的二叉搜索树]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/71057215</link><guid>https://blog.youkuaiyun.com/liransd/article/details/71057215</guid><author>liransd</author><pubDate>Mon, 01 May 2017 18:23:18 +0800</pubDate><description><![CDATA[一、问题描述
给一个排序数组（从小到大），将其转换为一棵高度最小的排序二叉树。

二、样例


给出数组 [1,2,3,4,5,6,7], 返回
     4
   /   \
  2     6
 / \    / \
1   3  5   7
三、思路
    先判断空时的情况，若非空，就将排序的数组中间的一个节点作为根节点，左子树比根节点值小，右子树比根节点值大。

四]]></description><category></category></item><item><title><![CDATA[二叉树的层次遍历]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/70991197</link><guid>https://blog.youkuaiyun.com/liransd/article/details/70991197</guid><author>liransd</author><pubDate>Sat, 29 Apr 2017 22:47:46 +0800</pubDate><description><![CDATA[一、问题描述
给出一棵二叉树，返回其节点值的层次遍历（逐层从左往右访问）

二、样例


给一棵二叉树 {3,9,20,#,#,15,7} ：
  3
 / \
9  20
  /  \
 15   7


返回他的分层遍历结果：
[
  [3],
  [9,20],
  [15,7]
]
三、思路
将每层的节点入对然后依次出队，再将出队节点的下一层保存，并将出队节点存入向]]></description><category></category></item><item><title><![CDATA[等价二叉树]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/70880588</link><guid>https://blog.youkuaiyun.com/liransd/article/details/70880588</guid><author>liransd</author><pubDate>Thu, 27 Apr 2017 22:43:12 +0800</pubDate><description><![CDATA[一、问题描述
检查两棵二叉树是否等价。等价的意思是说，首先两棵二叉树必须拥有相同的结构，并且每个对应位置上的节点上的数都相等。

二、样例

    1             1
   / \           / \
  2   2   and   2   2
 /             /
4             4



就是两棵等价的二叉树。
    1]]></description><category></category></item><item><title><![CDATA[克隆二叉树]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/70880464</link><guid>https://blog.youkuaiyun.com/liransd/article/details/70880464</guid><author>liransd</author><pubDate>Thu, 27 Apr 2017 22:23:56 +0800</pubDate><description><![CDATA[一、问题描述


深度复制一个二叉树。

给定一个二叉树，返回一个他的 克隆品 。
二、样例


给定一个二叉树：
     1
   /  \
  2    3
 / \
4   5


返回其相同结构相同数值的克隆二叉树：
     1
   /  \
  2    3
 / \
4   5
三、思路
先判断是否是空，再通过递归来克隆左右子树。
四、代码
/*]]></description><category></category></item><item><title><![CDATA[二叉树的最大深度]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/70195322</link><guid>https://blog.youkuaiyun.com/liransd/article/details/70195322</guid><author>liransd</author><pubDate>Sun, 16 Apr 2017 14:19:03 +0800</pubDate><description><![CDATA[一、问题描述


给定一个二叉树，找出其最大深度。

二叉树的深度为根节点到最远叶子节点的距离。
二、样例


给出一棵如下的二叉树:
  1
 / \ 
2   3
   / \
  4   5


这个二叉树的最大深度为3.

三、思路

从根节点出发开始计算，如果root==NULL, 高度为0；
否则，分别计算左子树的高度；右子树的高度；返回max（左子树]]></description><category></category></item><item><title><![CDATA[二叉树的最大节点]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/70195253</link><guid>https://blog.youkuaiyun.com/liransd/article/details/70195253</guid><author>liransd</author><pubDate>Sun, 16 Apr 2017 14:08:40 +0800</pubDate><description><![CDATA[一、问题描述
在二叉树中寻找值最大的节点并返回。

二、样例


给出如下一棵二叉树：
     1
   /   \
 -5     2
 / \   /  \
0   3 -4  -5 


返回值为 3 的节点。
三、思路
若树为空，则返回空；若不为空，则遍历找出最大数。
四、代码
lass Solution {
public:
    /**
     * ]]></description><category></category></item><item><title><![CDATA[链表——总结]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69344471</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69344471</guid><author>liransd</author><pubDate>Wed, 05 Apr 2017 20:51:03 +0800</pubDate><description><![CDATA[有关链表的题目感觉还是比较有趣的，就是需要考虑方方面面可能出现的情况，要考虑周全一些。
     有些题目比较简单也容易想，但也有些题目需要脑洞大开，实在想不到就只能请教同学了，但幸好最后还是搞得比较明白了。
     调程序不能着急，需要静下心来仔细思考，看是不是思路不对还是情况没有考虑完整，每调出一个程序心情都十分美丽~]]></description><category></category></item><item><title><![CDATA[删除链表中的元素]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69337271</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69337271</guid><author>liransd</author><pubDate>Wed, 05 Apr 2017 20:38:16 +0800</pubDate><description><![CDATA[1.问题描述

删除链表中等于给定值的所有节点


2.样例

给出链表 1->2->3->3->4->5->3, 和 val = 3,
 你需要返回删除3之后的链表：1->2->4->5。



3.思路

遍历链表中节点，对于与val值相等的节点，覆盖删除将指针指向下一个节点。

4.代码
/**
 * Definition for singly-linke]]></description><category></category></item><item><title><![CDATA[链表求和]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69330569</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69330569</guid><author>liransd</author><pubDate>Wed, 05 Apr 2017 20:10:51 +0800</pubDate><description><![CDATA[1.问题描述
你有两个用链表代表的整数，其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序，使得第一个数字位于链表的开头。写出一个函数将两个整数相加，用链表形式返回和。
2.样例
给出两个链表 3->1->5->null 和 5->9->2->null，返回 8->0->8->null
3.思路
当链表中有空表时，直接返回，当两链表都不是空表时，正常加法，如果有一个链表比另一个]]></description><category></category></item><item><title><![CDATA[链表划分]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69316255</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69316255</guid><author>liransd</author><pubDate>Wed, 05 Apr 2017 20:07:33 +0800</pubDate><description><![CDATA[问题描述：



          给定一个单链表和数值x，划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。

样例:


          给定链表 1->4->3->2->5->2->null，并且 x=3,返回 1->2->2->4->3->5->null

思路：

          新建两个链表还有两个指针，]]></description><category></category></item><item><title><![CDATA[合并两个排序链表]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69315342</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69315342</guid><author>liransd</author><pubDate>Wed, 05 Apr 2017 19:39:05 +0800</pubDate><description><![CDATA[问题描述：

将两个排序链表合并为一个新的排序链表


样例


给出 1->3->8->11->15->null，2->null，
 返回1->2->3->8->11->15->null。




思路：

分为链表为空与不为空讨论时，新建一个链表，依次从头节点开始比较移动。

代码：

/**
 * Definition of ListNode
 *]]></description><category></category></item><item><title><![CDATA[链表插入排序]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69214389</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69214389</guid><author>liransd</author><pubDate>Tue, 04 Apr 2017 21:40:51 +0800</pubDate><description><![CDATA[问题描述：

用插入排序对链表排序


样例:




Given 1->3->2->0->null,
 return 0->1->2->3->null

思路：



建立了一个新链表，比较大小，然后if语句，还得用到temp暂存。




代码：

/**
 * Definition of ListNode
 * class ListNode]]></description><category></category></item><item><title><![CDATA[两两交换链表中的节点]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69212695</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69212695</guid><author>liransd</author><pubDate>Tue, 04 Apr 2017 21:17:04 +0800</pubDate><description><![CDATA[问题描述：
给一个链表，两两交换其中的节点，然后返回交换后的链表。
样例：
给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。
思路：
（注意当节点数有单数时不用交换）建立一个新链表还有两个指针，进行交换。
代码：
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     i]]></description><category></category></item><item><title><![CDATA[删除排序链表中的重复元素]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69210688</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69210688</guid><author>liransd</author><pubDate>Tue, 04 Apr 2017 21:03:30 +0800</pubDate><description><![CDATA[问题描述：

给定一个排序链表，删除所有重复的元素每个元素只留下一个。

样例：




给出 1->1->2->null，返回 1->2->null给出 1->1->2->3->3->null，返回 1->2->3->nul

思路：

 一旦两节点重复，删掉p2，注意连续三个及以上节点值相同的情况。

代码：

/**
 * Definition of Li]]></description><category></category></item><item><title><![CDATA[翻转链表]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69205386</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69205386</guid><author>liransd</author><pubDate>Tue, 04 Apr 2017 20:50:49 +0800</pubDate><description><![CDATA[问题描述：

翻转一个链表




样例：


给出一个链表1->2->3->null，这个翻转后的链表为3->2->1->null




思路：

       新建链表，进行赋值交换，注意temp暂存。

代码：

/**
 * Definition of ListNode
 * 
 * class ListNode {
 * public:]]></description><category></category></item><item><title><![CDATA[链表倒数第n个节点]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69201134</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69201134</guid><author>liransd</author><pubDate>Tue, 04 Apr 2017 20:49:13 +0800</pubDate><description><![CDATA[问题描述：

找到单链表倒数第n个节点，保证链表中节点的最少数量为n。


样例：

给出链表 3->2->1->5->null和n = 2，返回倒数第二个节点的值1.


思路：

遍历得到链表的总长度，总长度减去n，就可以得到它在正数第几个。

代码：

/**
 * Definition of ListNode
 * class ListNode {
 ]]></description><category></category></item><item><title><![CDATA[删除链表中倒数第n个节点]]></title><link>https://blog.youkuaiyun.com/liransd/article/details/69195479</link><guid>https://blog.youkuaiyun.com/liransd/article/details/69195479</guid><author>liransd</author><pubDate>Tue, 04 Apr 2017 20:42:55 +0800</pubDate><description><![CDATA[问题描述：

给定一个链表，删除链表中倒数第n个节点，返回链表的头节点。




注意事项：链表中的节点个数大于等于n
样例:


给出链表1->2->3->4->5->null和 n = 2.

删除倒数第二个节点之后，这个链表将变成1->2->3->5->null.




思路：

       主要用两个指针，先让第一个指针指向第n个节点时，让第二个]]></description><category></category></item></channel></rss>