1 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 2 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 3 思路和方法 (1)递归思想,先交换根节点的左右子树的位置,然后向下递归,把左右子树的根节点作为下次循环的根节点. (2)非递归:所以我们可以采用前序遍历的方法进行操作,每当遇到一个结点的时候,首先判断其是否有左右孩子(有其中之一即可),如果有的话,就交换其左右孩子,然…
题目: 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 分析: 求二叉树的镜像,实际上也就是将一个二叉树左右翻转. 从根节点开始将左右指针互换,再对左右子树递归执行下去即可. 8 / \ 6 10 / \ / \ 5 7 9 11 ↓ 8 / \ 10 6 / \ / \ 9 11 5 7 ↓ 8 / \ 10 6 / \ /…
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 解析 先前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子节点, 当交换完所有的非叶子结点的左右子结点之后,就得到了树的镜像 解答 /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public clas…
剑指offer  面试题23:从上往下打印二叉树 参与人数:4853  时间限制:1秒  空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701?tpId=13&tqId=11175 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 分析: 此题即为二叉树的BFS,使用队列可以解决. AC代码: #include<cstdio> #include<vec…
操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 代码如下: function Mirror(root) { // write code here if(root) { var temp = root.left; root.left = root.right; root.right = temp; Mirror(root.left); M…
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 一 . 题目分析 首先要理解一个概念:什么是平衡二叉树,如果某二叉树中任意的左右子树深度相差不超过1,那么他就是一颗平衡二叉树.如下图: 所以,知道了这个概念之后,回归题目.判断该二叉树是不是平衡二叉树,就要在二叉树每个节点的深度来搞了,肯定要对二叉树进行遍历,但是如何效率最大化,如果从小往上遍历,一次遍历是否可以完成任务,而从下往上的遍历又让我想到了二叉树唯一的一种自下而上的遍历方法(我说的仅是前后根三种之中而已). 解决方案与关键词:…
public class a18_IsSubTree { public static boolean hasSubTree(TreeNode treeRoot1, TreeNode treeRoot2) { boolean result = false; if (treeRoot1 != null && treeRoot2 != null) { if (treeRoot1.data == treeRoot2.data) { result = DoesTree1HasTree2(treeRo…
一.题目:从上到下打印二叉树 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印.例如输入下图中的二叉树,则依次打印出8.6.10.5.7.9.11. 二叉树节点的定义如下,采用C#语言描述: public class BinaryTreeNode { public int Data { get; set; } public BinaryTreeNode leftChild { get; set; } public BinaryTreeNode rightChild { g…
题目:从上往下打印出二叉树的每个节点,同一层的结点按照从左往右的顺序打印. 解题思路:二叉树的层序遍历,在打印一个节点的时候,要把他的子节点保存起来打印第一层要把第二层的节点保存起来, 打印第二层要把第三层的结点保存起来,以此类推.可以使用的容器是队列,每一次打印一个结点的时候,如果该结点有子结点,则把该点的子结点放到队列的末尾, 接下来从队列的头部取出最早进入队列的节点,重复打印操作. package Solution; import java.util.LinkedList; import…
字符的所有组合 描述: 输入一个字符串,求这个字符串中的字符的所有组合.如:"abc",组合为"a" "b" c" "ab" "ac" "bc" "abc" 思路: 对于n个字符,求长度为m的组合,将字符分为两部分,对于当前的字符,要么取,然后再n-1个字符中取m-1个,要么不取,在n-1个字符中取m个. 代码: void combination(strin…