use of com.pkumar7.TreeNode in project Data-Structures-Algorithms by pankajgangwar.
the class JulyWeek4 method recurseTreeAnother.
public TreeNode recurseTreeAnother(TreeNode currentNode, TreeNode p, TreeNode q) {
if (currentNode == null)
return null;
if (currentNode.val == p.val || currentNode.val == q.val)
return currentNode;
TreeNode right = recurseTreeAnother(currentNode.left, p, q);
TreeNode left = recurseTreeAnother(currentNode.right, p, q);
if (right != null && left != null) {
return currentNode;
}
if (right == null && left != null) {
return left;
}
if (right != null && left == null) {
return right;
}
return null;
}
use of com.pkumar7.TreeNode in project Data-Structures-Algorithms by pankajgangwar.
the class DecemberW1 method buildFromPostOrder.
public TreeNode buildFromPostOrder(int left, int right, int[] postorder, HashMap<Integer, Integer> mapInorder) {
if (left > right)
return null;
TreeNode root = new TreeNode(postorder[postIdx--]);
int ri = mapInorder.get(root.val);
root.right = buildFromPostOrder(ri + 1, right, postorder, mapInorder);
root.left = buildFromPostOrder(left, ri - 1, postorder, mapInorder);
return root;
}
use of com.pkumar7.TreeNode in project Data-Structures-Algorithms by pankajgangwar.
the class JulyW1 method isCompleteTree.
/*
LC : 958
https://leetcode.com/problems/check-completeness-of-a-binary-tree/
*/
public boolean isCompleteTree(TreeNode root) {
if (root == null)
return true;
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
int level = 0;
Integer lastLevel = null;
while (!q.isEmpty()) {
int size = q.size();
boolean isLastLevel = false;
while (size-- > 0) {
TreeNode curr = q.poll();
if (curr.left == null) {
if (curr.right != null) {
return false;
}
}
if (isLastLevel && curr.left != null) {
// This node should not have any child as node with left child already encountered
return false;
}
if (curr.right == null && lastLevel == null) {
// We are at last level
isLastLevel = true;
lastLevel = level + 2;
}
if (curr.left != null) {
q.offer(curr.left);
}
if (curr.right != null) {
q.offer(curr.right);
}
if (lastLevel != null) {
if (lastLevel == level) {
return false;
}
}
}
level++;
}
return true;
}
use of com.pkumar7.TreeNode in project TNTConcept by autentia.
the class MenuBean method getMenu.
/**
* Get menu tree
* @return menu tree
*/
public TreeNode getMenu() {
// Create menu only the first time
if (menu == null) {
Principal creds = SpringUtils.getPrincipal();
Stack<TreeNode> path = new Stack<TreeNode>();
menu = new TreeNodeBase("menu", "Menu", false);
path.push(menu);
if (openNode(path, creds, null, "admin")) {
addLeaf(path, creds, Permission.Entity_Menu(User.class), "users");
addLeaf(path, creds, Permission.Entity_Menu(UserCategory.class), "userCategorys");
addLeaf(path, creds, null, "changePassword");
addLeaf(path, creds, Permission.Entity_Menu(Department.class), "departments");
// addLeaf( path, creds, Permission.Entity_Menu(Setting.class), "settings" );
closeNode(path);
}
if (openNode(path, creds, null, "masterTables")) {
addLeaf(path, creds, Permission.Entity_Menu(AccountEntryType.class), "accountEntryTypes");
addLeaf(path, creds, Permission.Entity_Menu(OrganizationType.class), "organizationTypes");
addLeaf(path, creds, Permission.Entity_Menu(InteractionType.class), "interactionTypes");
addLeaf(path, creds, Permission.Entity_Menu(OrganizationISOCategory.class), "organizationISOCategorys");
addLeaf(path, creds, Permission.Entity_Menu(ContractType.class), "contractTypes");
addLeaf(path, creds, Permission.Entity_Menu(Magazine.class), "magazines");
addLeaf(path, creds, Permission.Entity_Menu(OfferRejectReason.class), "offerRejectReasons");
closeNode(path);
}
if (openNode(path, creds, null, "billing")) {
addLeaf(path, creds, Permission.Entity_Menu(Bill.class), "bills");
addLeaf(path, creds, Permission.Entity_Menu(Account.class), "accounts");
addLeaf(path, creds, Permission.Entity_Menu(AccountEntry.class), "accountEntrys");
addLeaf(path, creds, Permission.Entity_Menu(PeriodicalAccountEntry.class), "periodicalAccountEntrys");
addLeaf(path, creds, Permission.Action_NOF, "nof");
addLeaf(path, creds, Permission.Entity_Menu(FinancialRatio.class), "financialRatios");
closeNode(path);
}
if (openNode(path, creds, null, "contacts")) {
addLeaf(path, creds, Permission.Entity_Menu(Organization.class), "organizations");
addLeaf(path, creds, Permission.Entity_Menu(Interaction.class), "interactions");
addLeaf(path, creds, Permission.Entity_Menu(Contact.class), "contacts");
addLeaf(path, creds, Permission.Entity_Menu(Offer.class), "offers");
addLeaf(path, creds, Permission.Entity_Menu(Project.class), "projects");
closeNode(path);
}
if (openNode(path, creds, null, "quality")) {
addLeaf(path, creds, Permission.Action_ListQualityDocuments, "qualityDocuments");
closeNode(path);
}
if (openNode(path, creds, null, "bulletin")) {
addLeaf(path, creds, Permission.Entity_Menu(BulletinBoard.class), "bulletinBoards");
addLeaf(path, creds, Permission.Entity_Menu(CompanyState.class), "companyStates");
addLeaf(path, creds, Permission.Entity_Menu(BulletinBoardCategory.class), "bulletinBoardCategorys");
addLeaf(path, creds, Permission.Entity_Menu(Idea.class), "ideas");
closeNode(path);
}
if (openNode(path, creds, null, "activity")) {
addLeaf(path, creds, Permission.Entity_Menu(Activity.class), "activitys");
addLeaf(path, creds, Permission.Entity_Menu(Objective.class), "objectives");
closeNode(path);
}
if (openNode(path, creds, null, "reports")) {
addLeaf(path, creds, Permission.Action_GeneralReports, "generalReports");
addLeaf(path, creds, Permission.Action_BitacoreReports, "bitacoreReports");
addLeaf(path, creds, Permission.Action_BillReports, "billReports");
addLeaf(path, creds, Permission.Action_ProjectReports, "projectReports");
addLeaf(path, creds, Permission.Action_InteractionReports, "interactionReports");
addLeaf(path, creds, Permission.Action_OrganizationReports, "organizationReports");
addLeaf(path, creds, Permission.Action_OfferReports, "offerReports");
addLeaf(path, creds, Permission.Action_OwnReports, "ownReports");
addLeaf(path, creds, Permission.Action_PersonalReports, "personalReports");
closeNode(path);
}
if (openNode(path, creds, null, "publish")) {
addLeaf(path, creds, Permission.Entity_Menu(Tutorial.class), "tutorials");
addLeaf(path, creds, Permission.Entity_Menu(Publication.class), "publications");
closeNode(path);
}
if (openNode(path, creds, null, "holiday")) {
addLeaf(path, creds, Permission.Entity_Menu(Holiday.class), "holidays");
addLeaf(path, creds, Permission.Entity_Menu(RequestHoliday.class), "requestHolidays");
addLeaf(path, creds, Permission.Entity_Menu(AdminHoliday.class), "adminHolidays");
closeNode(path);
}
if (openNode(path, creds, null, "utils")) {
addLeaf(path, creds, Permission.Entity_Menu(Book.class), "books");
addLeaf(path, creds, Permission.Entity_Menu(Inventary.class), "inventarys");
closeNode(path);
}
}
return menu;
}
use of com.pkumar7.TreeNode in project TNTConcept by autentia.
the class MenuBean method closeNode.
/**
* Finalize an opened node and return its parent. If the given node has no
* childs it is removed from the tree.
* @param path path of current node
* @return false if the node was removed
*/
private boolean closeNode(Stack<TreeNode> path) {
boolean closed = true;
TreeNode node = path.pop();
if (node.getChildCount() == 0) {
path.peek().getChildren().remove(node);
closed = false;
}
log.debug("addLeaf - " + (closed ? "CLOSE " : "REMOVE") + ": " + node.getIdentifier());
return closed;
}
Aggregations