一.题目 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 二.思路 结合图,我们可发现分成两大类: 1.有右子树的,那么下个结点就是右子树最左边的点:(eg:D,B,E,A,C,G) 2.没有右子树的,也可以分成两类: a)是父节点左孩子(eg:N,I,L) ,那么父节点就是下一个节点 : b)是父节点的右孩子(eg:H,J,K,M)找他的父节点的父节点的父节点...直到当前结点是其父节点的左孩子位置.如果没…
  题目描述:   给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针.   解题思路:   本题解决起来并不是很困难,主要是分析清楚所有可能的不同情况.对于中序遍历序列来说,遵循"左->根->右"的顺序,在深刻理解中序遍历的基础上,结合一些具体的实例我们不难得出以下结论.   找一个结点在中序遍历序列中的下一个结点共有三种不同的情况: 如果一个结点有右子树,那么它的下一个结点就是它的右子树中…
描述:给定一棵二叉树和其中的一个节点,找出中序遍历序列的下一个节点.树中应定义指向左节点.右节点.父节点的三个变量. 思路: 1.如果输入的当前节点有右孩子,则它的下一个节点即为该右孩子为根节点的子树的最左边的节点,比如2->5,1->3 2.如果输入的当前节点没有右孩子,就需要判断其与自身父节点的关系: 2.1如果当前节点没有父节点,那所求的下一个节点不存在,返回null. 2.2如果输入节点是他父节点的左孩子,那他的父节点就是所求的下一个节点,比如4->2 2.3如果输入节点是他父节…
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 题目分析 这题一定要画图,因为只有画图我们才能分清楚下一个节点有哪些情况 1.如果一个节点有右子树,那么它的下一个节点就是它的右子树中的最左子节点.也就是说,从右子节点出发一直沿着指向左子节点的指针,我们就能找到下一个节点. 2.如果没有右子树,又可以分为两种情况 如果节点是它父节点的左子节点,那么它的下一个节点就是它的父节点. 如果一个节点既没有右子…
面试题 8. 二叉树的下一个结点 NowCoder 题目描述 给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点?树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针. Java 实现 略…
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 题解一:递归 //既然给了二叉树的某个结点,且二叉树存储着指向父结点的指针(next), //那我们可以先找到根节点,再对树进行中序遍历,最后根据中序遍历结果找到给定结点的下一结点 private static ArrayList<TreeLinkNode> linkNodes = new ArrayList<>(); public st…
问题描述: 输入一棵二叉树和一个整数,打印出二叉树中结点指的和为输入整数的所有路径.从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.二叉树结点的定义如下: public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } 思路:(待续)看了书上的思路大概明白了.但是还没想到怎么写代码...…
问题描述: 操作给定的二叉树,将其变换为源二叉树的镜像. 二叉树结点定义为: public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } 例如: 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 思路: 从根结点出发,递归的,首…
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像.  输入描述 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 [思路] 总体思路就是遍历树的每一个节点,然后交换这个节点的左右子树.这样的话就存在两种解决方式,包括递归和非递归的方式.非递归的方式就是用栈来解决. [java代码-非递归] import java.util.Stack; public class Solution { pub…
剑指 Offer 28. 对称的二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 /\ /\ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1,2,2,null,3,nu…