链接二叉树中同一层的节点
这个题目之前做过了,但是由于思路不清晰,今天思路又卡了
比如:
0
1 2
3 4 5
6 7
1->2
3->4->5
6->7
参考数据结构:
struct TREE_NODE
{
TREE_NODE(int n) : nVal(n), pLft(NULL), pRgt(NULL), pSib(NULL)
{}
int nVal;
TREE_NODE* pLft;
TREE_NODE* pRgt;
TREE_NODE* pSib;
};
对于每一个节点tnode,都要将其左右节点链接。如果没有右节点,则就要找和tnode同一层的节点,直到找到一个节点有左孩子或者右孩子,返回这个节点的孩子。
有一个问题要解决,在找和tnode同层的节点的孩子节点,必须保证tnode同层的所有节点已经链接了,用先左再右的递归不行,所以要用从右到左的递归。
TREE_NODE *find_next(TREE_NODE *root)
{while(root = root->pSib) {if(root->pLft || root->pRgt)return root->pLft?root->pLft:root->pRgt;}return NULL;
}
void LinkLevelNodes(TREE_NODE *root)
{if(!root) return ;if(root->pLft)root->pLft->pSib = root->pRgt?root->pRgt:find_next(root);if(root->pRgt)root->pRgt->pSib = find_next(root);LinkLevelNodes(root->pRgt);LinkLevelNodes(root->pLft);
}
链接二叉树中同一层的节点相关推荐
- 将二叉树中每一层的节点串成链表
Crack interview 4.4 思想很简单,层序遍历: #include <iostream> #include <vector> #include <queue ...
- 二叉树中如何求根节点到任意节点的路径?
二叉树中如何求任一节点的路径呢? 思路 使用先序遍历,处理的时候让节点入栈,并且加上标志位即可. 使用另外的result保存最终的路径. 函数 void pre_order(TreeNode * no ...
- 牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案
牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案 题目描述 给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 题解: 我们想想最 ...
- 在二叉树中找到两个节点的最近公共祖先(C++)
在二叉树中找到两个节点的最近公共祖先 描述 给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 数据范围:树上节点数满足1 ...
- LeetCode 1602. 找到二叉树中最近的右侧节点(BFS)
文章目录 1. 题目 2. 解题 1. 题目 给定一棵二叉树的根节点 root 和树中的一个节点 u ,返回与 u 所在层中距离最近的右侧节点,当 u 是所在层中最右侧的节点,返回 null . 示例 ...
- 二叉树中任意两个节点的距离
题目: 一个普通二叉树,如何找到两个给定节点之间的距离? ,其中二叉树中每个结点的值都不相同 思路:两个节点之间的最短路径一定会经过两个节点的最小公共祖先,所以我们可以用LCA(最低公共祖先)的解法. ...
- leetcode刷题之 树(14)-递归:找出二叉树中第二小的节点
[LeetCode] Second Minimum Node In a Binary Tree 二叉树中第二小的结点 Given a non-empty special binary tree con ...
- LeetCode 671. 二叉树中第二小的节点
文章目录 1. 题目信息 2. 解题 2.1 递归查找 2.2 改循环 1. 题目信息 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点 ...
- LeetCode简单题之二叉树中第二小的节点
题目 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个. 更正式地说,即 root.val ...
最新文章
- iPhone全球技术巡讲北京站,WWDRChina 2009 Beijing
- Linux Kernel TCP/IP Stack — L7 Layer — 高性能网络 I/O 服务器模型
- Matplotlib实例教程(五)绘制散点图
- 简便满分解法:1005 继续(3n+1)猜想 (25分)
- Spring Boot CommandLineRunner和ApplicationRunner
- 中国微型计算机分省市产量数据统计,2017年6月中国微型计算机设备产量统计数据分析...
- observable_Java Observable clearChanged()方法与示例
- CSDN开放90%页面缩放阅读博文的惊喜
- VSCode 如何新建vue模板 - 插件引入篇
- SQL中到底要不要用WHERE 1=1
- 一些基本的数学概念,LDA的表述
- Python Re 模块超全解读
- Elasticsearch 快照到 HDFS 遇到的 PrivateCredentialPermission 问题及解决方法
- 如何处理计算机显示器故障,电脑显示器常见的故障及解决办法
- 赛博朋克!灵感来自枫树种子荚的多翼滑翔机,空中可分体
- 面试记录-苏宁(客服研发中心)
- 洛谷1967 火车运输 kruskal求最大生成树 倍增LCA维护最小值
- 解决input框上下偏移问题
- 无线通信技术热点及发展趋势
- Android 单元测试之Mockito
热门文章
- java中英对比_2017-11-09 中英文代码对比系列之Java一例
- 科研助力 | 牛津,MIT导师计算机科研项目招生(仅限AI,机器学习,深度学习方向)...
- 解决Transformer固有缺陷:复旦大学等提出线性复杂度SOFT
- CMU提出「十字绣网络」,自动决定多任务学习的最佳共享层
- SQuAD文本理解挑战赛十大模型解读
- java第一章Java语言概述和入门程序
- Spring Security基于角色的权限管理
- HDU1007 Quoit Design 分治+递归
- 堆晶结构_内蒙古苏尼特左旗地区堆晶角闪辉长岩的发现及地质意义
- r语言上机文本分析与词云绘制_倚天屠龙记的文本分析