ICode9

精准搜索请尝试: 精确搜索
  • (剑指offer)28.对称二叉树2019-09-14 20:03:59

    题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路: 1.针对前序遍历定义一种对称的遍历算法,即:根-右孩子-左孩子 如果对称遍历和前序遍历相同则是对称子树。 2.特殊情况,节点值全部相同。(考虑保存叶

  • 二叉树遍历2019-09-10 13:01:38

    前序遍历 void preTrval(TreeNode *T){ stack<TreeNode*> S; TreeNode *pNode = T; while (pNode != nullptr || !S.empty()) { if (pNode != nullptr) { cout << pNode->val<<' '; S.push(pNod

  • 【剑指offer-57】20190908/03 二叉树的下一个结点2019-09-08 17:40:54

    【剑指offer-57】二叉树的下一个结点 考点:树 时间限制:1秒 空间限制:32768K 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 自己做出来了吗: 时间: 思路: 分析二叉树的下一个节点,一共

  • 【剑指Offer】【链表】复杂链表的复制2019-08-30 13:00:23

    题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空   /*struct RandomListNode { int label; struct RandomLis

  • C语言双向链表讲解2019-08-29 23:01:44

    一、双向链表的概念     双向链表基于单链表。单链表是单向的,有一个头结点,一个尾结点,要访问任何结点,都必须知道头结点,不能逆着进行。而双链表添加了一个指针域,通过两个指针域,分别指向结点的前结点和后结点。这样的话,可以通过双链表的任何结点,访问到它的前结点和后结点。    

  • 【剑指Offer】【链表】反转链表2019-08-28 22:01:34

    题目:输入一个链表,反转链表后,输出新链表的表头。   A:定义3个结点,pNode作移动指针,pRet作输出指针,pPrev作前驱指针     在pNode没有到达链尾之前,循环里创建pNext指针记录pNode的后继结点   如果pNode为空,代表已经到了链尾,输出结果   其他:pNode的next指向pPrev,pPrev指向pNode,p

  • 剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。2019-08-26 17:02:12

    1 题目描述   输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 2 思路和方法   考察链表的遍历知识,和对链表中添加节

  • 剑指offer第57题:二叉树的下一个结点2019-08-25 15:37:18

    剑指offer第57题:二叉树的下一个结点题目描述二叉树的下一个结点源码 题目描述 二叉树的下一个结点 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 源码 /* struct TreeLinkNode {

  • 206.反转链表2019-08-24 22:52:43

    <语法及技巧><完全没思路> <抽象能力><知识短板> <...>   (标签) 题目 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?   我的思路 1 - (不推荐) 1.构造了一个新链表,开辟了新的数

  • [剑指offer] 二叉树的下一个结点2019-08-23 11:38:03

    题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 解题思路 /* public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null;

  • 【Offer】[35] 【复杂链表的复制】2019-08-18 09:55:38

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述   输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回

  • 剑指offer 二叉树的下一个结点2019-08-18 09:01:03

    原文链接:https://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e?f=discussion 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

  • 面试题8.二叉树的下一个节点2019-08-14 15:04:01

    题目描述: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 解析:1.如果节点有右子树,那么他的下一个节点就是他的右子树中的最左子节点。2.如果没有右子树,若节点是它父节点的左子节点,那

  • 剑指offer 按之字形顺序打印二叉树2019-08-11 22:01:54

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。     思路: 1、有了之前层次遍历一行一行输出的经验,我们可以直接用一个变量记录行数,如果是奇数行,就将队列中的元素按顺序

  • 数据结构与算法基础之链表插入和删除算法2019-08-08 23:52:08

    1 #include<stdio.h> 2 #include<malloc.h> 3 #include<stdlib.h> 4 5 //函数声明 6 PNODE create_list();//返回值是链表头结点的地址 7 void traverse_list(PNODE pHead); 8 bool is_empty(PNODE pHead); 9 int length_list(PNODE pHead); 10 bool insert_list

  • 数据结构与算法基础之非循环单链表创建和链表遍历2019-08-07 23:51:32

    1 #include<stdio.h> 2 #include<malloc.h> 3 #include<stdlib.h> 4 //函数声明 5 PNODE create_list();//返回值是链表头结点的地址 6 void traverse_list(PNODE pHead); 7 8 typedef struct Node{ 9 int data;//数据域10 struct Node * pNext;//指针域 11 }NODE,*

  • 剑指offer. 8 二叉树的中序后继和前驱节点2019-08-07 14:06:31

    剑指offer. 8 二叉树的中序后继和前驱节点 题目描述: 后继节点: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。(根节点的指向父节点的next指针为nullptr) 解题思路: 前驱节点和后继节点

  • 关于链表的一些题目2019-08-05 12:04:27

    文章目录1.删除链表中的重复元素运行结果:2.删除递增有序链表中大于min,小于max的元素运行结果:3.逆置链表第一种策略:第二种策略运行结果:完整代码: 1.删除链表中的重复元素 前一个与后一个比较,相同就删除结点,并释放内存。 void DeleteEqual(PNODE &pHead){ //删除链表中的重复

  • 秋招备战-算法系列(链表题)更新中。。。2019-07-31 12:39:24

    2019年的秋招已经陆陆续续的开始了,在这里记录下自己准备秋招过程中的一些算法题,题目来源主要是剑指offer以及leetcode: 基础题: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 思路: s1:从头到尾遍历链表,并将每一个节点的值存入栈中 s2:将栈中的元素出栈 /** * stru

  • 剑指offer第二版面试题7:二叉树的下一个节点(JAVA版本)2019-07-28 15:02:00

    题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 分析: 根据中序遍历的特点,要找到一个节点的下一个节点无非就是三种情况: 1、有右子树,这时只需要把其右孩子作为下一个遍历的(并不是要找的)节

  • 程序分析2-vec-list-map-MFC2019-07-27 20:52:04

    vector :动态数组 我们可以通过ecx查看对象的内存     list: 双向循环链表     map: 树     第一个是指向自己指针。 第二个是指向结构体 第三个是元素个数       // 数据结构.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h"#include <iostream>#inc

  • 剑指offer系列48:按之字形顺序打印二叉树2019-07-27 10:53:58

    做这个题,选对数据结构很重要。 之字形打印,说明单双数行的输出顺序不一致,因此需要用两个栈。一行的数据放在其中一个栈中,如果栈空了说明此行全部输出,因此换下一个栈。 1 class Solution { 2 public: 3 vector<vector<int> > Print(TreeNode* pRoot) { 4 vector<vector

  • 剑指offer 删除链表的节点2019-07-26 14:01:52

    给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。 1 struct ListNode {2 int val;3 ListNode *next;4 }; 1 void DeleteNode(ListNode* &pListHead, ListNode* pToBeDeleted): 2 if (!pListNode || !pToBeDeleted) { 3 return; 4

  • 反转链表系列题2019-07-24 18:06:57

    1.反转链表 反转链表有两种做法:迭代法和递归法,这里两种都写一下 1.1 迭代法 定义三个指针pPrev,pNode,pNext,分别指向当前节点的前一节点、当前节点、当前节点的后一节点,只要当前节点不为空,就不断地将当前节点的next指向前一节点,然后更新当前节点为下一节点,最后返回pPrev,因

  • 剑指offer——二叉树的下一个节点2019-07-23 20:53:13

    def GetNext(self, pNode): # write code here if not pNode: return pNode if pNode.right: left1=pNode.right while left1.left: left1=left1.left return left1 p=pNode

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有