C#实现后序遍历多叉树

了解

后序遍历多叉树的原理:依次从左到右访问子节点,最后访问父节点

C#实现后序遍历多叉树_第1张图片

遍历结果:5672341

栈的基本原理(后进先出)

C#实现后序遍历多叉树_第2张图片

数据表结构及数据

menu_id为节点的ID

menu_superior_id为节点的上一级ID,依据此ID关联到上一级节点

C#实现后序遍历多叉树_第3张图片

实现

实现思路

  1. 获取根节点下的所有子节点,使用栈,记录下次循环需要遍历的节点。
  2. 使用while循环遍历根节点下的子节点,直到栈内元素为空退出循环,说明已经遍历访问所有子节点。每次遍历时,获取到的是,父节点下的子节点与已访问节点的差集,以防止遍历重复的节点。
  3. 如果当前节点存在子节点时,入栈(左侧第一个子节点)
  4. 如果当前节点不存在子节点时,输出当前节点;并将节点添加到已访问的节点集合;最后出栈,使得下次遍历时,继续访问尚存在子节点的节点;

实现代码

见附件Demo,程序无需任何配置,即可运行

代码片段如下截图

C#实现后序遍历多叉树_第4张图片

运行结果

C#实现后序遍历多叉树_第5张图片

应用在菜单目录上,效果如下

C#实现后序遍历多叉树_第6张图片

你可能感兴趣的:(数据结构)