# 树和二叉树的相互转换 ## 树--->二叉树 转换方法 1. 加线:在兄弟之间加一连线 2. 抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系 3. 旋转:以树的根结点为轴心,将整颗树顺时针转45°。 口诀:**兄弟相连留长子** ![image_202206171436.drawio](https://wangyuedong-img.oss-cn-beijing.aliyuncs.com/img/image_202206171436.drawio.png) ![image-202206171442.drawio](https://wangyuedong-img.oss-cn-beijing.aliyuncs.com/img/image-202206171442.drawio.png) ## 二叉树--->树 转换方法 1. 加线:若p结点是双亲结点的左孩子,则将p的右孩子,右孩子的右孩子…沿分支找到的所有右孩子,都与p的双亲用线连起来。 2. 抹线:抹掉原二叉树中双亲与右孩子之间的连线。 3. 调整:将结点按层次排列,形成树结构。 口诀:**左孩右右连双亲,去掉原来右孩子线** ## 核心法则:树的孩子兄弟表示法 普通树和二叉树的相互转换其实就是树的孩子兄弟表示法的应用。孩子兄弟表示法,采用的是链式存储结构,其存储树的实现思想是:从树的根节点开始,依次用链表存储各个节点的孩子节点和兄弟节点。 链表中的节点包含以下内容: - 节点的值; - 指向孩子节点的指针; - 指向兄弟节点的指针。 ![](http://c.biancheng.net/uploads/allimg/190427/09552RJ6-1.gif) 孩子兄弟表示法可以作为将普通树转化为二叉树的最有效方法。