首页 > TAG信息列表 > curNode

993. 二叉树的堂兄弟节点(BFS)

993. 二叉树的堂兄弟节点 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。

剑指offer系列19:复杂链表的复制

这道题是典型的分治法,将一个大问题分解成几小步解决。一定要注意在使用指针的时候指针指向是否为空的问题。在指针指向时,可以将一个指向为空的指针作为赋值来写,但是空指针不能指向任何地方(指向空也不行),这点一定要记住。 #include<iostream> #include<vector> using namespace std

java实现链表

链表是非常常用的数据结构,常见的链表有单链表、双向链表和双向循环链表。 一个比一个复杂,但实际运用中,越往后越好用。 下面我们使用java分别实现: 一、单链表 单链表特点:1.单链表的head结点指向第一个数据节点,存数据,没有tail结点2.单链表的每个节点都有next指针指向下一个节点,但是

约瑟夫环

基于python的约瑟夫环 思路一:递归 # 约瑟夫环:递归 def KillYuesefu(n,m): if(n == 1): return 0 return (KillYuesefu(n - 1, m) + m ) % n def main(): for num in range(1,11): lastindex=KillYuesefu(num,8)+1 print(lastindex) i

10-二叉树-非递归遍历

二叉树的非递归遍历 #include<stdio.h> #include<stdlib.h> #include"myStack.h" //使用数组形式的栈 //非递归遍历可以使用下列规则 /* 每个节点设置一个标志位,默认状态为假 - 将根节点压入栈中 - 进入循环:只要栈中元素个数大于0,进行循环操作 - 弹出栈顶元素 - 如果这个栈

双向链表的基本操作

1. 与双向链表的初相识 首先,要明白它长什么样子:   通过观察可以发现这玩意由好几个单体组成,长度不定。欸嘿嘿,但每一个单体都是一样的啊。 ————有数据,有指向上一个单体的指针,有指向下一个单体的指针,只不过首尾指向空而已。 那么这几行代码就不南个理解啦! typedef struct N

再战leetcode(两两交换链表中的节点)

24. 两两交换链表中的节点 题目描述 想法 代码 class Solution { public ListNode createListNode(int n) { ListNode head = null, tmp = null, tail = null; int data; Scanner scanner = new Scanner(System.in); System.out.print

LeetCode 111. 二叉树的最小深度

层序遍历的应用: 移步->LeetCode 111. 二叉树的最小深度 移步->LeetCode 104. 二叉树的最大深度 移步->LeetCode 102. 二叉树的层序遍历 移步->LeetCode 226. 翻转二叉树 题目链接-LeetCode 111. 二叉树的最小深度 递归法思路: 注意这里有一个陷阱。 上图,左子树为空,最小深度不

C语言数据结构--链表

链表 链表是一种最基础的数据结构,和数组一样可以用来进行其他数据结构的构建。 链表的结构 链表一般有两部分。 第一部分为数据部分,用于存储相应的数据。 第二部分为指针部分,用于指向其他节点。    (后面几个节点外的大方框表示前一个节点的 nxt 指向的时这个节点整体而不只是

字典树&前缀树 1 [Trie]

1 字典树、前缀树、Trie 将一个单词列表使用words组装起来,实现如下:(仅含有小写的字典),可以在log(m)时间内查询一个单词是否在字典中。 1.1 可能的小技巧 1 一些可以想到的优化: 1.1 如果对一个长串反复查询,则使用一个node指针指向当前查询位于Trie里面的位置,避免反复查询相同

T876链表的中间节点——Java实现

T876题目描述 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 解题过程 解法一 思路 使用常规方法,也就是先遍历链表获得链表长度,随后获得中间结点的下标,再次遍历链表到中间节点位置,返回该节点即可 设链表的长度为size,

并查集题集1 & dfs & bfs & unionMerge & 二分图

0 一些基础 判断整个图是否连通 使用dfs判断整个图是否连通: // if not connected, return false vecctor<int> stack = {0}; vector<bool> vis(graph.size(), false); vis[0] = true; int visCnt = 1; // dfs to check if c

阿翰 剑指offer 之 Day 15 搜索与回溯算法 4 中等

目录 搜索与回溯算法  1 二叉树中和为某一值的路径 1. DFS ​2. 优化  2 二叉搜索树与双向链表 1. 中序遍历  2. DFS 3 二叉搜索树的第k大节点  1. 递归+中序遍历 2. 递归+中序遍历倒序 搜索与回溯算法  1 二叉树中和为某一值的路径 剑指 Offer 34. 二叉树中和为某一值的

0404-左子叶之和

计算给定二叉树的所有左叶子之和。 示例: 3 / 9 20 / 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sum-of-left-leaves 参考: https://leetcode-cn.com/problems/sum-of-left-leaves/solution/dai-ma

对象-添加新的字段

form: { name: '', // 部门名称 code: '', // 部门编码 manager: '', // 部门管理者 introduce: '' // 部门介绍 }, curNode: 123 >>> nweObj={...form,pid:curNode}

使用python实现单链表

使用python实现单链表 刷LeetCode题刷到了单链表,因为对python比较熟悉,因此打算用python实现一个单链表。题目要求如下: get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为

Leetcode103. 二叉树的锯齿形层序遍历

Leetcode103. 二叉树的锯齿形层序遍历 题目描述 /** * * 给定一个二叉树,返回其节点值的锯齿形层序遍历。 * (即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 */ 思路分析 对二叉树锯齿形层序遍历,实质为对二叉树层序遍历的扩展 使用一个

LeetCode-103-二叉树的锯齿形层序遍历

二叉树的锯齿形层序遍历 题目描述:给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例说明请见LeetCode官网。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traver

JavaExample09-单向链表的倒置

JavaExample09-单向链表的倒置 1.原理 将单向链表倒置的难点是单向链表的每个节点只能指向一个节点,如果直接将链表中某一个节点指向其前一个节点,那么就找不到后面的节点了。 所以我们需要定义指针来进行操作。 定义三个指针curNode、preNode、nextNode,分别代表当前节点,当前节点的

二叉树的非递归(迭代)统一实现“前中后序遍历”详解

目录 二叉树大家都非常熟悉,二叉树的遍历大家也不会陌生。用递归法来实现二叉树的“前中后序遍历”相对简洁,用几行代码就能实现,并且只需改变代码顺序就能实现3种遍历。与之相反,非递归(迭代)遍历方法实现“前中后序遍历”起来较为复杂,并且不太容易通过简单的交换代码的次序来

【二刷随笔】剑指 Offer 37. 序列化二叉树 / leetcode 297,BFS,超详细解题记录!

目录 剑指 Offer 37. 序列化二叉树 / leetcode 297:代码,注释很详细,直接看也行:思路:1、序列化2、辅助函数strToNode3、反序列化 剑指 Offer 37. 序列化二叉树 / leetcode 297: 二叉树的序列化与反序列化 题目链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu

约瑟夫环(杀人游戏)

问题描述: 刚学数据结构的时候,我们可能用链表的方法去模拟这个过程,N个人看作是N个链表节点,节点1指向节点2,节点2指向节点3,……,节点N - 1指向节点N,节点N指向节点1,这样就形成了一个环。然后从节点1开始1、2、3……往下报数,每报到M,就把那个节点从环上删除。下一个节点接着从1开始

数据结构之LinkedList | 让我们一块来学习数据结构

highlight: monokai theme: vue-pro 上一篇文章中使用列表(List)对数据排序,当时底层储存数据的数据结构是数组。本文将讨论另外一种列表:链表。我们会解释为什么有时链表优于数组,还会实现一个基于对象的链表。下面让我们一起来学习LinkedList。 数据结构之List | 让我们一块来学习

每日一题力扣430

  多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。 给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。 来源:力

链表翻转

ListNode* ReverseList(ListNode* pHead) { if (pHead == NULL) { return NULL; } ListNode pHeadNew(0); pHeadNew.next = pHead; ListNode* curNode = pHead; ListNode* nextNode = pHead->next; while (nextNode != NULL) { curNode->next = nextNod