7.5.6 获得结点的右兄弟
先获得双亲结点 , 然后获得右孩子:
/*** 获得树中结点的右兄弟 , 若无右兄弟则返回空** @param node 指定结点* @return 指定结点的右兄弟* @author Korbin* @date 2023-01-18 18:15:54**/public BinaryTreeNode rightSibling(BinaryTreeNode node) {if (null == node) {return null;}BinaryTreeNode parent = parent(node);if (null == parent) {return null;}BinaryTreeNode rightChild = parent.getRightChild();if (node.equals(rightChild)) {return null;} else {return rightChild;}}
7.5.7 为结点添加子结点
先找到结点 , 再设置即可:
/*** 在树中结点上 , 添加一个非空树为其左子树或右子树** @param node指定结点* @param left是否左子树 , true为左子树 , false为右子树* @param childTree 待添加的树* @author Korbin* @date 2023-01-18 18:16:13**/public void insert(BinaryTreeNode node, boolean left, BinaryTreeNode childTree) {BinaryTreeNode treeNode = findNode(node, root);if (null != treeNode) {if (left) {treeNode.setLeftChild(childTree);} else {treeNode.setRightChild(childTree);}}}
7.5.8 删除结点的子结点
找到结点 , 再设置子结点即可:
/*** 删除树中结点的左子树或右子树** @param node 指定结点* @param left 是否左子树 , true为左子树 , false为右子树* @author Korbin* @date 2023-01-18 18:16:37**/public void delete(BinaryTreeNode node, boolean left) {if (null == node || null == root) {return;}BinaryTreeNode treeNode = findNode(node, root);if (null != treeNode) {if (left) {treeNode.setLeftChild(null);} else {treeNode.setRightChild(null);}}}
7.5.9 前序遍历
若二叉树为空 , 则返回空 , 否则先访问根结点 , 再访问左孩子 , 再访问右孩子 , 遵循根结点->左孩子->右孩子逻辑 , 即从左到右根在前:
/*** 前序遍历** @return 遍历结果* @author Korbin* @date 2023-01-18 18:21:11**/public List
7.5.10 中序遍历
遍历过程为左孩子->根结点->右孩子 , 即从左到右根在中间:
/*** 中序遍历** @return 遍历结果* @author Korbin* @date 2023-01-18 18:21:11**/public List
7.5.11 后序遍历
顺序为左孩子->右孩子->根结点 , 即从左到右根在后:
/*** 后序遍历** @return 遍历结果* @author Korbin* @date 2023-01-18 18:21:11**/public List
- 2 青岛大学-王卓 数据结构与算法基础
- 11_1 韩顺平 数据结构与算法 树结构基础部分_二叉树
- 6.3树的存储结构
- 鹅掌柴养殖方法幸福树?
- 常绿灌木有哪些树种
- 榕树的种类
- 20年的玉树长疯了,砍1刀、杆子比大腿还粗,开花1000朵!
- 大树将军冯异的生平简介冯异为什么会早死
- 青岛大学-王卓老师 数据结构与算法——学习笔记(第2周)
- 决策树可视化及模型评估 SE SP AUC