java左右值树移动节点_无限极设计以及随意移动节点(树结构)

public intupdatePartyExamineBankType(PartyExamineBankType partyExamineBankType)

{

//查询新上级的数据

PartyExamineBankType newParentBank=partyExamineBankTypeMapper.selectById(partyExamineBankType.getParentId());

//查询当前id的旧数据

PartyExamineBankType oldBank=partyExamineBankTypeMapper.selectPartyExamineBankTypeById(partyExamineBankType.getId());

String newAncestors="";if (StringUtils.isNotNull(newParentBank) &&StringUtils.isNotNull(oldBank))

{

String oldAncestors=oldBank.getAncestors();

Long id=partyExamineBankType.getId();

Long pId=newParentBank.getId();

//这里判断下,如果涉及上下级或者间接关系走这里if(newParentBank.getAncestors().contains(Convert.toStr(id))){

String s=newParentBank.getAncestors();

String param=s.substring(s.lastIndexOf(Convert.toStr(id)));

newAncestors=oldAncesto

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现一颗无限极可以通过递归的方式实现。具体思路如下: 1. 定义节点类,包含节点ID、节点名称、父节点ID、子节点列表等属性。 2. 创建节点列表,将根节点加入列表中。 3. 以递归的方式遍历节点列表,对于每个节点,根据其父节点ID查找父节点,将其加入父节点的子节点列表中。 4. 遍历完节点列表后,即可得到一颗完整的无限极。 以下是一个示例代码: ```java public class TreeNode { private int id; private String name; private int parentId; private List<TreeNode> children; public TreeNode(int id, String name, int parentId) { this.id = id; this.name = name; this.parentId = parentId; this.children = new ArrayList<>(); } // getter and setter public static void main(String[] args) { // 构造节点列表 List<TreeNode> nodeList = new ArrayList<>(); nodeList.add(new TreeNode(1, "节点1", 0)); nodeList.add(new TreeNode(2, "节点2", 1)); nodeList.add(new TreeNode(3, "节点3", 1)); nodeList.add(new TreeNode(4, "节点4", 2)); nodeList.add(new TreeNode(5, "节点5", 4)); // 递归构造 TreeNode root = new TreeNode(0, "根节点", -1); buildTree(root, nodeList); // 输出 printTree(root, 0); } // 递归构造 public static void buildTree(TreeNode parent, List<TreeNode> nodeList) { for (TreeNode node : nodeList) { if (node.getParentId() == parent.getId()) { parent.getChildren().add(node); buildTree(node, nodeList); } } } // 输出 public static void printTree(TreeNode node, int level) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < level; i++) { sb.append("-"); } System.out.println(sb.toString() + node.getName()); for (TreeNode child : node.getChildren()) { printTree(child, level + 1); } } } ``` 在上述示例代码中,我们定义了一个TreeNode类,其中包含节点ID、节点名称、父节点ID、子节点列表等属性。在main方法中,我们构造了一个节点列表,然后调用buildTree方法递归构造。最后调用printTree方法输出的结构。输出结果如下: ``` -根节点 --节点1 ---节点2 ----节点4 -----节点5 ---节点3 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值