数据结构(树)

题目1:二叉树的镜像

思路:递归

8                                8

6      10        转换成     10     6

5    7   9    11             11   9  7    5

 static void SwapNode(Node node)
        {
            if (node == null)
            {
                return;
            }

            Node temp = node.Left;

            node.Left = node.Right;
            node.Right = temp;

            SwapNode(node.Left);
            SwapNode(node.Right);
        }

题目2:从上往下打印二叉树

思路:利用队列(广度优先)

    static void PrintFromTopToBottom(Node node)
        {
            if (node == null)
            {
                return;
            }
            Queue<Node> queue = new Queue<Node>();
            queue.Enqueue(node);
            while (queue.Count > 0)
            {
                Node current = queue.Dequeue();
                Console.WriteLine(current.Value);
                if (current.Left != null)
                {
                    queue.Enqueue(current.Left);
                }
                if (current.Right != null)
                {
                    queue.Enqueue(current.Right);
                }
            }
        }
时间: 2024-10-31 04:17:40

数据结构(树)的相关文章

数据结构--树(定义与存储结构)

树基本定义 树的定义 数是具有n个节点的有限集.如图即是一个树形结构. 节点分类 节点的度:一个节点拥有的子节点即成为节点的度,比如A节点,有B和C两个子节点,那么A节点的度=2. 叶节点(终端节点):没有子节点的节点,比如G.H.I.... 如图: 节点间关系 孩子节点:某一个节点的子节点称为孩子节点.比如B.C节点是A节点的孩子节点. 双亲节点:与孩子节点相反.比如,A节点是B.C的双亲节点. 兄弟节点:同一个双亲节点的孩子节点,之间称为兄弟节点.比如,B.C为兄弟节点. 如图: 树的存储结

数据结构--树的一些计算

先解释一下一些最基本的概念 结点的孩子结点个数即为该结点的度.度为0的结点叫叶子结点.处在树的最顶端(没有双亲)的结点叫根结点. 介绍一下公式 k:总度数k+1:总节点数 为什么总节点数肯定比总度数多1呢?其实很简单可以解释,度可以看作节点与节点之间的线,多1就是显而易见的 设该二叉树总结点数为N,叶子结点个数为n0,度为1的结点个数为n1.度为2的节点个数为n2下面可得两等式:(1) N = n2 + n0 + n1;依据:很显然,二叉树总结点数等于度分别为0,1,2的结点个数总和.(2) N

数据结构---树、二叉树、森林

1.基本术语: 度:有两种度"结点的度"与"树的度".结点的度指的是一个结点子树的个数:树的度是指树中结点度的最大值. 叶子结点:指的是没有子树的结点. 层:树是有层次的,一般根结点为第0层.规定根结点到某结点的路径长度为该结点的层数. 深度:树中结点的最大层数 兄弟:同一双亲的结点,互为兄弟 堂兄弟:双亲在同一层次的结点,互为堂兄弟 祖先:从根结点到该结点的路径上的所有结点都是该结点的祖先. 子孙:以某一结点为根的子树上的所有结点都是该结点的子孙 森林:n棵互不相

01-(2)数据结构-树

数据结构——树 标签: 数据结构树 2014-12-07 15:46 972人阅读 评论(0) 收藏 举报  分类: 数据结构(8)  一.树的定义 树是n(n>=0)个结点的有限集.n=0时称为空树,在任意一颗非空树:1.有且仅有一个特定的根结点.2.当n>1时其余结点可分为m(m>0)个互不相交的有限集T1.T2......Tm,其中每一个集合本身又是一棵树,并且称为根的子树. 二.结点的度,拥有的子树称为结点的度 如上图结点A的度是2,结点B的度是1,结点C的度是2,结点E的度是3

数据结构——树状数组

我们今天来讲一个应用比较广泛的数据结构——树状数组 它可以在O(nlogn)的复杂度下进行单点修改区间查询,下面我会分成三个模块对树状数组进行详细的解说,分别是树状数组基本操作.树状数组区间修改单点查询的实现.树状数组查询最值的实现 一. 树状数组一般分为三种操作,初始化.修改.查询 在讲基本操作之前,我们先来看一张图 这张图就是树状数组的存储方式,对于没有接触过树状数组的人来说看懂上面这张图可能有些困难,上图的A数组就是我们的原数组,C数组则是我们需要维护的数组,这样存储能干什么呢,比如我们在

数据结构 树(下)

数据结构 树(下) 一.概述 AVL树.伸展树.红黑树搜索树算法保证最坏情况或者一系列操作情况下,搜索.插入和删除的操作的时间复杂度是O(logn).本文主要内容包含:平衡搜索树中的AVL树.伸展树.(2,4)树.红黑树 和(a,b)树.B树等实际运用的树数据结构. 二叉搜索树的删除 二.AVL树 1.基本知识 1.AVL树是维持对数O(logn)的高度的特殊二叉搜索树.“高度”指根节点到叶子节点最长路径上的节点的数量.“None”的孩子的高度是0,叶子节点的高度是1,父节点是叶子节点的高度加1

数据结构 树(上)

数据结构 树(上) 一.概述 主要内容包含树的基本概念.二叉树(平衡二叉树.完全二叉树.满二叉树).搜索树(二叉搜索树.平衡搜索树.AVL树.伸展树.(2,4)树.红黑树).(a,b)树.B树等实际运用的树数据结构 二.基本知识(树的定义和属性) 1.树(非线性数据结构)运用于一些算法实现的效率会比线性数据结构(基于数组的列表和链表)快,广泛运用于文件系统目录结构.图形用户界面.MySQL数据库索引.网站.路由协议和其他计算机系统中 2.树T定义为存储一系列元素的有限节点集合,这些节点具有 pa

数据结构 - 树 复习(不详细)

数据结构 - 树 首先回忆一下树的术语 节点的度:一个节点含有的子树的个数称为该节点的树 树的度:一棵树中,最大的节点的度称为树的度 节点的层次:从根开始定义,根为第一层(有时候定义为第0层) 高度:对于任意节点n,n的高度为n到一片树叶的最长路径的长度,所有树叶的高度为0 树的遍历 前序遍历:先访问根,然后访问左右子树 中序遍历:先访问左子树,然后访问根,最后访问右子树 后序遍历:先访问子树,然后访问根 层序遍历:先访问离根节点最近的节点,按层遍历 #include<iostream> us

数据结构——树笔记1

树属于非线性数据结构,它是一种层次结构:如果存在前驱节点,则是唯一的,如果存在后继节点,则可以是多个.即树的元素之间是一对多的关系.树是由n个节点构成的有限集合T,如果n = 0,则是空树,如果n不等于0,则一个非空树,有且只有一个根结点root,如果n>1,则除了根结点外,其余节点又可以划分为有限集T1,T2......Tm 其中每个有限集有是一棵树.称为子树subtree. 树的存储结构    双亲表示法  孩子表示法 孩子兄弟表示法(二叉树表示法) 森林:M棵互不相交的树的集合. 二叉树:

数据结构--树

无论是链表,栈还是队列,它们都是线性结构的,每个节点的左边最多一个节点,右边也最多一个节点,对于大量的输入数据,线性表的访问时间太慢,不宜使用.这里我要说一种非线性的数据结构,其大部分操作的运行时间平均为O(logn). 我们涉及到的这种数据结构叫做树.在计算机科学中,树是非常有用的抽象概念.我们形象的去描述一棵树,一个家族的老祖可能有两个儿子,这两个儿子一个有一个儿子,一个有三个儿子,像这样发展下去的一个族谱,就是一个树.下面是常见的一种树:二叉树. 本文中以二叉树为例,将二叉树的数据结构定义