充实二叉树横向指针(算法)

原创 2015年07月07日 21:33:31

给定一个二叉树,每个结点除了有左右节点以外,还有一个next  节点。初始的时候,next 为null ,现在要求充实next,使其指向其右边的节点。如果没有右边的节点,那么设置为null.要求使用常数级空间。给出的二叉树是完全二叉树,即每个节点要么没有子节点,要么有两个,而且所有叶节点都在同一层上、

1,按层遍历完全二叉树,记录每一层第一个需要遍历的节点。通过观察,我们知道,下一层的第一个节点是本层下一个节点的左子树。

2,把属于同一父节点的左右子树连接起来。

3,连接不属于同一节点的临近节点,即跨子树连接,我们可以通过父节点的next 节点获取一下个父节点,那么该节点的左节点就是临近节点。


public void connectTree(TreeLinkNode root)
{	
	TreeLinkNode currlevel = root;
	while(currlevel != null)
	{
		TreeLinkNode across = currlevel;
		while(across != null)
		{
			if(across.left != null)
				across.left.next = across.right;
			if(across.right != null && across.next != null)
				across.right.next = across.next.left;
			across = across.next;
		}
		currlevel = currlevel.left;
	}
}


JAVA二叉树横向打印

  • 2009年11月06日 11:23
  • 5KB
  • 下载

【LeetCode-面试算法经典-Java实现】【116-Populating Next Right Pointers in Each Node(二叉树链接右指针)】

【116-Populating Next Right Pointers in Each Node(二叉树链接右指针)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Giv...

二叉树算法引发的指针参数传递和引用的思考

最近想熟悉一下基本的数据结构和算法,于是写了一个二叉树程序,功能很简单,只有二叉树的建立和遍历。在这个过程中,却发现了一些平时没有注意到的细节问题,写出来作为总结和大家分享。   待讨论和...

蓝桥杯-横向打印二叉树(模拟)

这题好麻烦,目前还没想到可以不保存在数组中直接输出的方法 感觉题目的样例不能准确表明各种格式 大概: 465 32413 1231 45 17 674 14 5756 这组样例(不要在意范围)应该输出...

蓝桥杯-历届试题-横向打印二叉树(遍历树+模拟)

//传送门:http://lx.lanqiao.cn/problem.page?gpid=T34 #include #include #include #include #include #inc...

Algorithm学习笔记 --- 横向打印二叉树(二叉树的排序)

Algorithm学习笔记 --- 横向打印二叉树(二叉树的排序)

二叉树的遍历算法

  • 2015年01月11日 11:42
  • 1KB
  • 下载

二叉树常见为什么用二级指针

一个二叉树的建立代码如下所示: 点击(此处)折叠或打开 #include  #include  struct BiTNode {      char data;      stru...

dit算法matlab仿真 结合二叉树

  • 2017年08月18日 19:40
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:充实二叉树横向指针(算法)
举报原因:
原因补充:

(最多只允许输入30个字)