题目: 请实现一个函数,用来判断一颗二叉树是不是对称的。 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路: 对于一棵二叉树,从根结点开始遍历, 如果左右子结点有一个为NULL,那么肯定不是对称二叉树…
分类:二叉树相关算法
非递归判断完全二叉树!递归?No answer!
判断完全二叉树。 完全二叉树的定义是,只有第n行将所有子节点元素集中在最左以外(可以不满),其余行所有节点均为满。 结构 typedef struct tree{ char data; struct tree *lc,*…
二叉树的五种遍历方法
目录 1. 概述 2. 二叉树有五种遍历方法 3. 先序遍历/深度优先遍历 3-1. 递归遍历 3-2. 迭代遍历 4. 中序遍历 5. 后序遍历 6. 广度优先遍历 1. 概述 遍历是对树的一种最基本的运算,所谓遍历二…
n个结点,不同形态的二叉树(数目+生成)
题目链接: 不同的二叉查找树:http://www.lintcode.com/zh-cn/problem/unique-binary-search-trees/ 不同的二叉查找树 II:http://www.li…
线索二叉树的深度理解
不知道你是否和我当时一样,对于线索二叉树,有点云里雾里的感觉,现在我们来一起探讨下吧。 首先,我们所应该知道的是:线索二叉树是对二叉链表中空指针的充分利用,也就是说,使得原本是空指针的转化成在某种遍历的顺序下,指向该结点…
(算法)二叉树中两个结点的最近公共父结点
题目: 二叉树中两个结点的最近公共父结点 二叉树结点的定义如下: struct TreeNode{ int val; TreeNode *left; TreeNode *right; }; 思路: 前面在剑指…
(算法)是否为二叉查找树的后序遍历数组
题目: 给定一数组,判断它是否为二叉查找树的后序遍历数组 思路: 想想,二叉查找数树的特点,任意根结点大于左子树的所有值,而小于右子树的所有值; 再想想,后序遍历的特点,先遍历左子树,再遍历右子树,最后是根结点; 因此很…
(算法)二叉树两个结点的最远距离
题目: 求二叉树两个结点的最远距离。 二叉树定义如下: class TreeNode{ public: int val; TreeNode* left; TreeNode* right; TreeNode(int x):…
Go语言二叉树定义及遍历算法实现
// binary_tree 二叉树 package Algorithm import ( "reflect" ) // 二叉树定义 type BinaryTree struct { Data interface{} L…
二叉树的左视图和右视图
所谓二叉树的左视图,是指打印从左方向看到的二叉树。 根据前序遍历算法思想,在左视图代码中先遍历左子树在遍历左子树,这样在判断level == len(stack)时,先遍历左子树则保证层数与数组长度相等时遍历的是每一层的…
(剑指Offer)面试题25:二叉树中和为某一值的路径
题目: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 二叉树结点的定义: struct TreeNode{ int val;…
JAVA实现二叉树(简易版--实现了二叉树的各种遍历)
1,个人感觉二叉树的实现主要还是如何构造一颗二叉树。构造二叉树函数的设计方法多种多样,本例采用 addNode 方法实现。以下程序通过定义内部类来表示二叉树的结点,然后再实现了二叉树这种数据结构的一些基本操作。 &nbs…