算法总结之 打印二叉树的边界节点

给定一棵二叉树的头节点head,

按照两种标准分别实现二叉树边界节点的逆时针打印

标准一

头节点为边界节点

叶节点为边界节点

如果节点在其所在的层中是最左或者最右边,那么也是边界节点

标准二

头节点作为边界节点

叶节点位边界节点

树左边界延伸下去的路径为边界节点

树有边界延伸下去的路径为边界节点

时间: 2024-10-06 13:29:17

算法总结之 打印二叉树的边界节点的相关文章

左神算法书籍《程序员代码面试指南》——3_02打印二叉树的边界节点【★★】

[题目]给定一棵二叉树的头节点head,按照如下两种标准分别实现二叉树边界节点的逆时针打印.标准一:1.头节点为边界节点.2.叶节点为边界节点.3.如果节点在其所在的层中是最左或最右的,那么也是边界革点.标准二:1.头节点为边界节点.2.叶节点为边界节点.3.树左边界延伸下去的路径为边界节点.4.树右边界延伸下去的路径为边界节点.例如,如图3 - 2所示的树. 按标准一的打印结果为:1,2,4,7,11,13,14,15,16,12,10,6,3按标准二的打印结果为:1,2,4,7,13,14,

打印二叉树中距离根节点为k的所有节点

package tree; public class Printnodesatkdistancefromroot { /** * Given a root of a tree, and an integer k. Print all * the nodes which are at k distance from root.For example, in the below tree, 4, 5 & 8 are at distance 2 from root. 1 / \ 2 3 / \ / 4

从上到下打印二叉树,同节点的从左到右。

public class TreeNode(){ public int val; publicTreeNode Left; public TreeNode Right; public TreeNode(int x){ val=x } } 局部变量temp获取当前结点,queue获取此结点下的左右结点.循环遍历直到queue为空 原文地址:https://www.cnblogs.com/5598Code/p/12122980.html

从上往下打印二叉树(分层遍历)

从上往下打印二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 从上到下打印二叉树的规律:每一次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个队列的末尾.接下来到队列的头部取出最早进入队列的节点,重复前面的打印操作,直到队列中所有的节点都被打印出来为止. struct TreeNode { int val; TreeNode* left; TreeNode* right; }; void LevelOrder(BinaryTreeNode* root) { if (roo

打印二叉树节点数值总和等于某个给定节点的所有路径

打印二叉树节点数值总和等于某个给定节点的所有路径,路径可以从任意节点开始,任意节点结束. 比如,假设和是8,树如下 的路径有  [[5,3],[8],[5,1,2]].  5  / \ 3     1 /\     /\ 4  8  2   6 思路:遍历所有路径,对于每一个节点,在其路径中向后寻找sum和为target的路径加入到结果中. public List<List<Integer>> findSum(TreeNode root,int sum){ List<List

二叉树的边界打印

2017-07-11 22:59:29 二叉树的边界打印刚开始看到的时候觉得还是有难度的,主要是想一次通过递归完成,不过后来,在车下仔细思考后觉得其实是很简单的一个问题. 基本思路就是按左子树,叶子子树和右子树进行分别的打印就可以很好的解决这个问题. 而每一部分的打印只需要使用基本的递归思想就可以了. 具体的代码如下: void leftin(Bintree* root) { if(root&&root->left) { cout<<root->data<&l

算法笔记_189:历届试题 横向打印二叉树(Java)

目录 1 问题描述 2 解决方案   1 问题描述 问题描述 二叉树可以用于排序.其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树. 当遇到空子树时,则把该节点放入那个位置. 比如,10 8 5 7 12 4 的输入顺序,应该建成二叉树如下图所示,其中.表示空白. ...|-1210-|...|-8-|.......|...|-7.......|-5-|...........|-4 本题目要求:根据已知的数字,建立排序二叉树,并在标准输出中横

Python实现打印二叉树某一层的所有节点

不多说,直接贴程序,如下所示 # -*- coding: utf-8 -*- # 定义二叉树节点类 class TreeNode(object): def __init__(self,data=0,left=0,right=0): self.data = data self.left = left self.right = right # 遍历某一层所有节点,并打印 def TransLevel(root,level): if root == None: return else: if leve

剑指offer22:从上往下打印出二叉树的每个节点,同层节点从左至右打印。

1 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 2 思路和方法 使用一个队列存放节点.先将根节点加入到队列中,然后循环遍历队列中的元素,遍历过程中,访问该节点的左右子节点,再将左右子节点加入到队列中. 例子:1 2 3 4 5 6 7 8 ? 对于第一层,只有根节点 1,第二层有节点2和3.先将根节点1加入到队列中,接下来要打印节点为1的两个子节点,应该在遍历到该根节点时把值为2和3的两个子节点保存到队列.按照从左向右打印的要求,取出2,保存其子节点4:随后取出3,保存其子